今天在看一个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判断和循环而已。