1. 程式人生 > >Bash退出和退出狀態碼

Bash退出和退出狀態碼

-----------------------------------------------------------------Sun-------------------------------------------------------------------

一、退出狀態碼

1.退出

exit 被用來結束一個指令碼,它也返回一個值,並且這個值會傳遞給指令碼的父程序,父程序會使用這個值做下一步的處理。

2.退出狀態碼

每個命令都會返回一個退出狀態碼(有時候也被稱為返回狀態)。

成功的命令返回 0,不成功的命令返回非零值,非零值通常都被解釋成一個錯誤碼。

同樣的,指令碼中的函式和指令碼本身也會返回退出狀態碼。在指令碼或者是指令碼函式中執行的最後的命令會決定退出狀態碼

在指令碼中,exit nnn 命令將會nnn退出碼傳遞給shell(nnn必須是十進位制數,範圍必須是0-255)。

當指令碼以不帶引數的exit命令來結束時,指令碼的退出狀態碼就由指令碼中最後執行的命令來決定(就是 exit 之前的命令)
#!/bin/bash
echo hello
echo $?        #退出狀態為0,即命令正常執行

lskdf            #無效命令
echo $?       #狀態碼非零,命令執行失敗

exit 113       #退出狀態碼
                   # echo $?  檢視得知退出碼為 113 
$? 指代的是上一條指令的執行結果。

二、反轉一個條件的用法

#!/bin/bash

true
echo "exit status of \"true\" = $? "             #exit status of "true" = 0 


! true
echo "exit status of \"!true\" = $? "            #exit status of "! true" = 1

! 和指令間需要一個空格。

若是一個命令以!開頭,會啟用Bash的歷史機制

 $ true
 $ echo $?
0
 $ !true
 $ true       //輸入!true會自動在命令列彈出true
 $ echo $?
0
這一次就沒有反轉結果,只是重複了之前的命令true