在shell脚本中执行mailx命令
问题描述:
我有一个简单的shell脚本来执行.sql脚本。当.sql脚本完成时,shell脚本会将一封电子邮件发送到指定地址,通知是否成功运行了.sql脚本。在shell脚本中执行mailx命令
我的问题是主题行被截断。我正在使用一个简单的IF语句来确定主题行:
grep 'ORA-' $OUTFILE > /dev/null 2>&1
if [ $? = 1 ]; then
ERRORS=n
SUBJECT= "$VERSION script successful"
else
ERRORS=y
SUBJECT="$VERSION script had error(s)"
fi
这工作正常。然而,当我执行的mailx命令,主题行被截断为“发展”或“生产”,这取决于脚本的版本已执行:
mailx -s $SUBJECT $EMAIL < $MAILFILE
我知道主题行需要在如果它包含嵌入空格,则使用双引号,但在分配给变量时似乎不能正确运行。
有没有办法解决?有没有办法逃脱双引号
答
你需要为你使用它来引用$SUBJECT
,即
mailx -s "$SUBJECT" $EMAIL < $MAILFILE
也应该有
SUBJECT="$VERSION script successful"
看来工作没有空间(主要是)当我这样做时:“$ {SUBJECT}”。但是,由于$ SUBJECT正在被分配一个字符串作为变量($ VERSION),所以字符串现在是“$ VERSION script successful”或“$ VERSION script has error(s)”。任何想法如何获得变量$ VERSION解析为一个字符串? – elpisu 2011-05-25 19:51:28
1.我注意到你的任务中有一个空间,比如'SUBJECT =“....”。 2.你描述的行为听起来像你在你的任务上有单引号,即'SUBJECT ='...''。现在去睡觉。将在早上检查。祝你好运。 – shellter 2011-05-26 02:18:12