命令的返回值是其退出狀態,退出狀態用於檢查命令執行的結果(成功/失敗)。如果退出狀態為0,則命令執行成功。如果命令失敗,則退出狀態為非零。 |
下面表格中是返回值對應着退出狀態的解釋:
返回值 | 退出狀態 |
---|---|
0 | 成功 |
非0狀態 | 失敗 |
2 | 用法不正確 |
126 | 不是可執行文件 |
127 | 沒有找到指令 |
$?特殊變量
shell中的變量名$?
是一個特殊的內置變量,可以獲取最后一次執行命令的退出狀態。
- 在執行shell函數后,
$?
返回函數中最后一次執行命令的退出狀態。 - 在執行shell腳本后,
$?
返回腳本中最后一次執行命令的退出狀態。 -
www.chinaz.com/news/2017/1228/842454.shtml?qq-pf-to=pcqq.c2c
www.techweb.com.cn/prnews/qiyenews/archives/57251.html
包含退出狀態的腳本實例
以下exit_status.sh
腳本顯示了幾種退出狀態:
[root@localhost scripts]# vim exit_status.sh #! /bin/bash echo -e "Successful execution" echo -e "=====================" echo "hello world" # 退出狀態為0,因為命令執行是成功的。 echo "Exit status" $? echo . echo -e "Incorrect usage" echo -e "=====================" ls --option # 使用了錯誤的用法,所以退出狀態為2。 echo "Exit status" $? echo . echo -e "Command Not found" echo -e "=====================" bashscript # 退出狀態為127,因為該腳本或者命令不存在。 echo "Exit status" $? echo . echo -e "Command is not an executable" echo -e "=============================" touch execution.sh ls -l execution.sh ./execution.sh # 退出狀態為126,因為該文件沒有執行權限。 echo "Exit status" $? echo . echo -e "Custom status" echo -e "=====================" function test1(){ if [ ! -x "./execution.sh" ]; then echo "\"./execution.sh\" no execute permission!!" return 66 fi } test1 # 退出狀態為66,函數test1中判斷文件是否不存在,不存在就返回echo語句,並定義了返回值。 echo "Exit status" $?
下面是執行結果后,返回的各種退出狀態。
總結
命令的返回值是其退出狀態,退出狀態用於檢查命令執行的結果(成功/失敗)。如果退出狀態為0,則命令執行成功。如果命令失敗,則退出狀態為非零。