Shell 腳本中的exit狀態解釋


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

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

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

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

  • 在執行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" $?

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

總結

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM