Linux Shell程式設計(11)——退出和退出狀態
阿新 • • 發佈:2019-02-09
exit命令一般用於結束一個指令碼,就像C語言的exit一樣。它也能返回一個值給父程序。
每一個命令都能返回一個退出狀態(有時也看做返回狀態).一個命令執行成功返回0,一個執行不成功的命令則返回一個非零值,此值通常可以被解釋成一個對應的錯誤值。除了一些例外的情況,一個行為端莊的UNIX命令,程式或是軟體包執行成功能返回0的作為退出碼。
同樣的,在腳本里的函式和指令碼自身都會返回一個退出狀態碼。在指令碼或函式裡被執行的最後一個命令將決定退出狀態碼。在一個腳本里,exit nnn 命令將會返回shell一個nnn的退出狀態碼。(nnn必須是一個在0-255範圍的十進位制整數)。
如果一個指令碼以不帶引數的exit命令結束,指令碼的退出狀態碼將會是執行exit命令前的最後一個命令的退出碼。
指令碼結束沒有exit,不帶引數的exit和exit $?三者是等價的。
$?變數儲存了最後一個命令執行後的退出狀態。當一個函式返回時,$?儲存了函式裡最後一個命令的退出狀態碼。這就是Bash裡函式返回值的處理辦法。當一個指令碼執行結束,$? 變數儲存指令碼的退出狀態,而指令碼的退出狀態則是指令碼中最後一個已執行命令的退出狀態。並且依照慣例,0表示執行成功,1-255的整數範圍表示錯誤。
每一個命令都能返回一個退出狀態(有時也看做返回狀態).一個命令執行成功返回0,一個執行不成功的命令則返回一個非零值,此值通常可以被解釋成一個對應的錯誤值。除了一些例外的情況,一個行為端莊的UNIX命令,程式或是軟體包執行成功能返回0的作為退出碼。
同樣的,在腳本里的函式和指令碼自身都會返回一個退出狀態碼。在指令碼或函式裡被執行的最後一個命令將決定退出狀態碼。在一個腳本里,exit nnn 命令將會返回shell一個nnn的退出狀態碼。(nnn必須是一個在0-255範圍的十進位制整數)。
如果一個指令碼以不帶引數的exit命令結束,指令碼的退出狀態碼將會是執行exit命令前的最後一個命令的退出碼。
#!/bin/bash COMMAND_1 . . . # 指令碼將會以最後命令COMMAND_LAST的狀態碼退出。 COMMAND_LAST exit
指令碼結束沒有exit,不帶引數的exit和exit $?三者是等價的。
#!/bin/bash
COMMAND_1
. . .
# 會以最後命令的退出碼退出指令碼.
COMMAND_LAST
exit $?
#!/bin/bash
COMMAND1
. . .
# 會以最後命令的退出碼退出指令碼.
COMMAND_LAST
$?變數儲存了最後一個命令執行後的退出狀態。當一個函式返回時,$?儲存了函式裡最後一個命令的退出狀態碼。這就是Bash裡函式返回值的處理辦法。當一個指令碼執行結束,$? 變數儲存指令碼的退出狀態,而指令碼的退出狀態則是指令碼中最後一個已執行命令的退出狀態。並且依照慣例,0表示執行成功,1-255的整數範圍表示錯誤。