1. 程式人生 > >shell指令碼中的exit -1 問題

shell指令碼中的exit -1 問題

今天在看一個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判斷和迴圈而已。