shell脚本执行返回的状态码
http://www.cnblogs.com/MyEyes/archive/2012/01/12/2320529.html
Linux下一條命令或一個進程執行完成會返回一個一個狀態碼。
0 ? === ? 成功執行
非0 === ?執行過程中出現異常或非正常退出
在Shell腳本中 最后執行的一條命令將決定整個shell腳本的狀態. 此外 shell的內部命令exit也可以隨時終止shell腳本的執行,返回Shell腳本的狀態碼
當shell腳本執行結束前 的最后一個命令是不帶參數的exit ,那么 shell腳本的最終返回值 就是 exit 語句前一條語句的返回值,根據這個值可以判斷腳本成功執行與否。
?$? 可以查看 最后一條命令的返回值 該變量可以在shell 腳本中的任何地方使用.
#! /bin/bash echo "please input the branch you want to compare" read $MY_BRANCH for i in $(cat list) dogit-diff --quiet $MY_BRANCH $i [--quiet 選項的意思是不要輸出比較后各個diff出來的結果]if [ $? -eq 0 ] [$? 就是上一條命令執行的狀態碼]then echo $ifi done?
http://feng.blog.rritw.com/get_exist_status_and_return_value_in_shell.html
?
在Linux Shell中獲取被調用函數的退出狀態和返回值
不管是在執行什么樣語言編寫的程序,都需要獲得其被調用函數或程序的退出狀態或(及)返回值,以便于我們好根據退出狀態或(及)返回值判斷當前被調用的函數或程序的執行結果是否成功等,然后好做進一步的處理,如提示用戶出錯了,還是繼續執行等。
這里先就退出狀態和返回值做一下名詞解釋:
退出狀態:執行某一函數或者程序之后通過變量”#?”獲得的值;
返回值:運行某一函數(或程序)時該函數(或程序)運行過程中所有的輸出。
在執行完有返回值的函數時,該返回值就是當前函數的退出狀態值,在這種情況下,可以認為兩者是相同的。
如下示例:
“$?”只是表示其緊接著的上一行命令的執行結果,它的值是時刻改變的,如果不立即對獲取的返回結果進行處理,可以將”$?”賦值給一個變量,以便后面使用,看以下示例:
#!/bin/bash echo "hello"; helloResult=$?; echo "baby"; babyResult=$?; echo $helloResult echo $babyResult退出狀態一般是用來恒量某個函數或程序是否是正常退出。按照約定,返回”0″表示程序正常退出。返回”非0″表示程序非正常退出。被調用的函數可以是沒有返回值的,如果是正常的執行完所有的語句,此時也會認為程序是正常完成,退出狀態也會是”0″。
如果被調用的函數或程序有使用”return”返回值,那么”retrun”返回的結果就被認為是程序的退出狀態了,如下示例:
輸出如下:
$ ./t4.sh Hello Baby 255?
總結
以上是生活随笔為你收集整理的shell脚本执行返回的状态码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 调 cmd 没反应
- 下一篇: Got minus one from a