標籤:style blog color 使用 for ar div 代碼
2.return與exit區別
- return 表示從被調函數返回到主調函數繼續執行,返回時可附帶一個傳回值,由return後面的參數指定,當然如果是在主函數main, 自然也就結束當前進程了,如果不是,那就是退回上一層調用。
- exit(0)表示正常退出執行程式,如果加其它的數值:1,2,....可以表示由於不同的錯誤原因而退出 。
- main函數中exit(0)等價於return 0。
1. Linux下一條命令或一個進程執行完成會返回一個一個狀態代碼。
0 === 成功執行 非0 === 執行過程中出現異常或非正常退出
- 在Shell指令碼中 最後執行的一條命令將決定整個shell指令碼的狀態.
- shell的內部命令exit也可以隨時終止shell指令碼的執行,返回Shell指令碼的狀態代碼 。
- 當shell指令碼執行結束前的最後一個命令是不帶參數的exit ,那麼 shell指令碼的最終傳回值 就是 exit 語句前一條語句的傳回值,根據這個值可以判斷指令碼成功執行與否。
- $? 可以查看 最後一條命令的傳回值 該變數可以在shell 指令碼中的任何地方使用.
2段範例程式碼
#! /bin/bashecho "please input the branch you want to compare"read $MY_BRANCHfor i in $(cat list)do git-diff --quiet $MY_BRANCH $i [--quiet 選項的意思是不要輸出比較後各個diff出來的結果] if [ $? -eq 0 ] [$? 就是上一條命令執行的狀態代碼] then echo $i fidone
#!/bin/bashif [ ! -n "$1" ] ;then echo "sqoop1.sh missing 1 parameter:db.properties." echo "Usage: ./xxx.sh db.properties" exit 2else echo "the sqoop season is running..." eval `cat ./db.properties` sqoop import --append --connect $url --username $username --password $password --target-dir $targetDir --m $num --table $table --fields-terminated-by ‘$deco‘ --where " CUR_DATE LIKE ‘$Jan%‘ OR CUR_DATE LIKE ‘$Feb%‘ OR CUR_DATE LIKE ‘$Mar%‘" > logSqooq1.log 2>&1
# exit 200fi
對上面第2個shell指令碼的說明:
1.進入if,傳回值是2;如果進入else;如果所有的sqoop命令運行正常,傳回值是0,如果sqoop命令執行有異常,傳回值是非0。
2.如果第11行添加 exit 200,那麼無論sqoop語句執行異常與否,傳回值都是200。