Linux Shell 編程常見規則及退出狀態碼

 

狀態碼 描述
0 命令成功結束
1 通用未知錯誤  
2 誤用Shell命令
126 命令不可執行
127 沒找到命令
128 無效退出參數
128+x Linux信號x的嚴重錯誤
130 命令經過Ctrl+C控制碼越界
255 退出碼越界

狀態碼訪問:shell

$echo $?express

Shell符號規則,現總結備忘以下:編程

1.方括號[]bash

通常來講經常使用於test命令spa

example:命令行

[ $arg1 = $arg2 ] :檢查兩個參數是否相等。code

[ -d $HOME ]  --檢查$HOME代指是否爲目錄文件,如果則返回狀態碼0,這種狀況下才判斷成功blog

其實質至關於test -d $HOME,咱們能夠用字符串

$echo $? 檢測狀態碼數學

 

2.雙圓括號(( expression ))

做用:雙圓括號容許你將高級數學表達式放入比較中

下面是雙圓括號所支持的命令符號:

雙圓括號命令符號
                    符號                                                                          描述                                                   
val++ 後增
val-- 後減
++val 先加
--val 先減
! 邏輯求反
~ 位求反
** 冪運算
<< 左位移
>>  右位移
&  位布爾和
|  位布爾或
&&  邏輯和
||  邏輯或

 3.雙方括號 [[ expression ]]

 做用:提供了針對字符串比較高級特性,除了能夠像方括號使用test命令那樣以外,還能夠進行模式匹配。

 

4.$[ operation ]

做用:執行數學表達式

example:

var3=$[ $var1 / $var2 ]

 5.命令行參數

5.1如何簡單接受命令行參數

$0 : 程序名

$1-$9:字符串或者數值參數。

${10}10個參數以上表達方式

參數計數:$#,這個變量跟C語言中的argc是同樣的做用,只不過沒有顯示的表示而已。

5.2 如何遍歷參數 :$*和$@的區別

區分codes(來自Linux 命令行與shell腳本編程大全):

res:

5.3 如何處理選項與參數

codes:

 1 #!/bin/bash
 2 while [ -n "$1" ]
 3 do
 4 
 5    case "$1" in
 6 
 7     -a) echo "Found the -a option" ;;
 8 
 9      -b) echo "Found the -a option" ;;
10 
11     -c) echo "Found the -a option" ;;
12 
13     --) shift break  ;;
14 
15   esac
16 
17   shift
18 
19 done
20 
21 count=1
22 
23 for param in $@
24 
25 do
26 
27   echo "Parameter #$count: $param"
28 
29   count=$[ $count +1 ]
30 
31 done

 六、Shell的輸入與輸出

這裏只說明幾種特殊的狀況:

a.只重定向錯誤輸出:

方法:將對應的文件描述符寫在重定向符號前面。

b.臨時重定向

方法:在文件描述符前加and(&)

$echo "This is an error message" >&2

c.永久重定向

方法:用exec來告訴shell在腳本運行期間重定向某個文件描述符。

$exec 1>testout

相關文章
相關標籤/搜索