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
答案 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
在任何错误时退出脚本,但不清楚您的问题是什么......