bash Shell - 没有退出if-elif条件

时间:2017-03-29 14:27:43

标签: bash

Bash shell没有退出 - 对于下面的代码 - 虽然我没有得到任何错误。 请帮我解决退出机制

当我按下CTRL + D时,我会在适当的条件下正确输出

#!/bin/bash

read un < $HOME/un.txt

sqlplus $un @report.sql > Package_migration_report.`date -d "1 day ago" +"%b_%d_%Y"`.xls 

mail_to="xxxx"

count=$(grep -c "no rows selected" $HOME/Package_migration_report.`date -d "1 day ago" +"%b_%d_%Y"`.xls) 

error=$(grep -c ERROR $HOME/Package_migration_report.`date -d "1 day ago" +"%b_%d_%Y"`.xls)

if [ "$error" -gt 0 ]

then

    echo -e "Error occurred\n\nNOTE: In case of Schema/password change is done to HARP database, the private variables in the script needs modifications - SCM team Will take appropriate action" |mailx -s "Package Migration Report for `date -d "1 day ago" +"%b_%d_%Y"` "  $mail_to

elif [ "$count" -gt 0 ]

then

    echo -e "Hi All\n\nNo Packages where migrated for `date -d "1 day ago" +"%b_%d_%Y"` \n\n\nThanks & Regards \nSCM team \n\n\n" |mailx -s "Package Migration Report for `date -d "1 day ago" +"%b_%d_%Y"` "  $mail_to

else

    cat mail_content_2 | mailx -s "Package Migration Report for `date -d "1 day ago" +"%b_%d_%Y"` "  -a $HOME/Package_migration_report.`date -d "1 day ago" +"%b_%d_%Y"`.xls $mail_to

fi

exit 0

2 个答案:

答案 0 :(得分:0)

问题在于数据库的用户名/密码 - 因为它错了 - 控件没有从SQL返回并等待重新输入密码。

要解决此问题,我已经使用了以下一次登录选项(-l标志)(它不会重新提示输入pwd)如果密码错误则会立即退出sql :)

sqlplus -l $un @report.sql> Package_migration_report.`date -d "1 day ago" +"%b_%d_%Y"`.xls 

答案 1 :(得分:-1)

尝试set -e在任何错误时退出脚本,但不清楚您的问题是什么......