Shell 指令碼中的exit狀態解釋

夢共裡醉發表於2021-10-26
的返回值是其退出狀態,退出狀態用於檢查 執行的結果(成功/失敗)。如果退出狀態為0,則命令執行成功。如果命令失敗,則退出狀態為非零。

下面表格中是返回值對應著退出狀態的解釋:

返回值 退出狀態
0 成功
非0狀態 失敗
2 用法不正確
126 不是可執行檔案
127 沒有找到指令
$?特殊變數

中的變數名 $?是一個特殊的內建變數,可以獲取最後一次執行命令的退出狀態。
Shell 指令碼中的exit狀態解釋Shell 指令碼中的exit狀態解釋

  • 在執行shell函式後, $?返回函式中最後一次執行命令的退出狀態。
  • 在執行shell 後, $?返回 中最後一次執行命令的退出狀態。
包含退出狀態的指令碼例項

以下 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" $?

Shell 指令碼中的exit狀態解釋Shell 指令碼中的exit狀態解釋
下面是執行結果後,返回的各種退出狀態。
Shell 指令碼中的exit狀態解釋Shell 指令碼中的exit狀態解釋

總結

命令的返回值是其退出狀態,退出狀態用於檢查命令執行的結果(成功/失敗)。如果退出狀態為0,則命令執行成功。如果命令失敗,則退出狀態為非零。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2839221/,如需轉載,請註明出處,否則將追究法律責任。

相關文章