shell指令碼中的exit -1 問題
阿新 • • 發佈:2019-02-14
今天在看一個shell指令碼時,遇到一個問題。在if判斷中出現exit -1 這行程式碼時,究竟是隻退出if判斷,還是直接退出shell指令碼呢?
指令碼如下
#連線資料庫查詢系統營業日期,將結果寫入臨時檔案xtrq.txt sqlplus system/*****@10.192.***.***:1521/cmisdb <<! set heading off; set feedback off; set term off; set verify off; spool xtrq.txt; select replace(last_openday,'-','') from pub_sys_info; spool off ! if [ $? -ne 0 ] then echo "連線資料庫獲取系統日期失敗!\n" exit -1; fi
echo "連線資料庫獲取系統日期成功!\n"
這是一個獲取系統日期的sql執行指令碼。執行如果出錯後,name
echo "連線資料庫獲取系統日期失敗!\n"
這一行還會輸出嗎 ?
答案是不會。在shell指令碼中,如果命令正常執行了,那麼會返回0。就是上面判斷的 $? 這個符號,得到的值是0,而如果返回的不是0,就意味著命令列沒有正確執行成功。而在shell指令碼中,exit -1 相當於jiava中的return 命令。會直接退出shell指令碼,而不只是退出if判斷和迴圈而已。