Shell 腳本中的exit狀態解釋

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

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

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

shell中的變量名$?是一個特殊的內置變量,可以獲取最後一次執行命令的退出狀態。
Shell 腳本中的exit狀態解釋Shell 腳本中的exit狀態解釋

  • 在執行shell函數後,$?返回函數中最後一次執行命令的退出狀態。
  • 在執行shell腳本後,$?返回腳本中最後一次執行命令的退出狀態。
  • news.yesky.com/hotnews/235/318705735.shtml
    www.techweb.com.cn/prnews/qiyenews/archives/46669.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" $?

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

總結

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章