Bash退出和退出狀態碼
阿新 • • 發佈:2019-01-26
-----------------------------------------------------------------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