inux提供$?特殊變量來儲存最後一條指令執行結束的退出狀态。執行完一條指令後,立即執行echo$?,可以檢視最後一條指令的退出狀态值。
正常的情況下,指令成功執行完成的退出狀态是0,如果非0,則指令執行有錯。
該指令可以用于檢查指令是否正确執行,比如在解壓包的時候,檢查解壓包是否成功十分有效。
自定義退出狀态碼,可以在腳本中定義自己的退出狀态代碼,然後使用echo $?檢查。
退出狀态碼最高是255,一般自定義的代碼值為0~255,如果超出255,則傳回該數值被256除了之後的餘數。
退出狀态代碼:
0 指令成功完成
1通常的未知錯誤
2誤用shell指令
126指令無法執行
127沒有找到指令
128無效的退出參數
128+x使用Linux信号x的緻命錯誤。
130使用Ctrl-C終止的指令
255規範外的退出狀态
ubuntu下測試結果如下
[email protected]:/home/python$ date
2013年 11月 14日 星期四 19:12:45 CST
[email protected]:/home/python$ echo $?
0
[email protected]:/home/python$ kkllk
kkllk: command not found
[email protected]:/home/python$ echo $?
127
[email protected]:/home/python$ ls
hello.py hello.py~
[email protected]:/home/python$ vim a.c
[email protected]:/home/python$ ls
hello.py hello.py~
[email protected]:/home/python$ gedit a.c
[email protected]:/home/python$ ./hello.py
bash: ./hello.py: 權限不夠
[email protected]:/home/python$ echo $?
126
[email protected]:/home/python$ date %t
date: 無效的日期"%t"
[email protected]:/home/python$ echo $?
1
[email protected]:/home/python$
[email protected]:~# ls -sail test
790207 4 -rwxr--r-- 1 root root 30 11月 14 19:25 test
[email protected]:~# ./test
[email protected]:~# echo $?
44
[email protected]:~# cat test
#!/bin/bash
var=300
exit $var
[email protected]:~#