1. 程式人生 > >Ubuntu 指令返回的結果檢視/指令執行的退出狀態/退出碼檢視

Ubuntu 指令返回的結果檢視/指令執行的退出狀態/退出碼檢視

在Linux 系統中,每當命令執行完成後,系統都會返回一個退出狀態。該退出狀態用一整數值表示,用於判斷命令執行正確與否。若退出狀態值為 0,表示命令執行成功;而退出狀態值不為 0時,則表示命令執行失敗。最後一次執行的命令的退出狀態值被儲存在內建變數“ $?”中,所以可以通過echo語句進行測試命令是否執行成功。 POSIX規定了以下幾種退出狀態和退出狀態的含義。

常用引數

格式:exit n

退出。設定退出碼為n。(Cause the shell to exit with a status of n.)

 

格式:exit

退出。退出碼不變,即為最後一個命令的退出碼。(If n is omitted, the exit status is that of the  last  command executed. )

 

格式:$?

上一個命令的退出碼。

 

格式:trap "commands" EXIT

退出時執行commands指定的命令。( A trap on EXIT is executed before the shell terminates.)

 

退出碼(exit status,或exit code)的約定:

0表示成功(Zero - Success)

非0表示失敗(Non-Zero  - Failure)

2表示用法不當(Incorrect Usage)

127表示命令沒有找到(Command Not Found)

126表示不是可執行的(Not an executable)

 

 

使用示例

示例一 退出當前shell

[[email protected] ~]# [[email protected] ~]# exit logout

 

示例二 在指令碼中,進入指令碼所在目錄,否則退出

Bash程式碼 

1

cd $(dirname $0) || exit 1

 

示例三 在指令碼中,判斷引數數量,不匹配就列印使用方式,退出

1

2

3

4

if "$#" -ne "2" ]; then

    echo "usage: $0 <area> <hours>"

    exit 2

fi

示例四 在指令碼中,退出時刪除臨時檔案

1

trap "rm -f tmpfile; echo Bye." EXIT

示例五 檢查上一命令的退出碼

1

2

3

4

5

./mycommand.sh

EXCODE=$?

if "$EXCODE" == "0" ]; then

    echo "O.K"

fi

以下是一些實際的例子:

[email protected]:/home$ ls
alloy  pi
[email protected]:/home$ echo $?
0
#執行成功
[email protected]:/home$ ls test
ls: cannot access test: No such file or directory
[email protected]:/home$ echo $?
2
#傳遞引數失敗
[email protected]:/home$ test
[email protected]:/home$ echo $?
1
#傳遞引數失敗
[email protected]:/home$ alloy
-bash: alloy: command not found
[email protected]:/home$ echo $?
127
#沒有這個命令

--------------------- 
作者:alloy 
來源:CSDN 
原文:https://blog.csdn.net/alloyinrunning/article/details/23660265 

https://www.cnblogs.com/itcomputer/p/4157859.html
版權宣告:本文為博主原創文章,轉載請附上博文連結!