| 命令的返回值是其退出狀態,退出狀態用於檢查命令執行的結果(成功/失敗)。如果退出狀態為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,則命令執行成功。如果命令失敗,則退出狀態為非零。
