狀態碼 | 描述 |
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