在shell脚本中执行mailx命令

elp*_*isu 4 shell mailx

我有一个简单的shell脚本执行.sql脚本..sql脚本完成后,shell脚本会将电子邮件发送到指定的地址,通知.sql脚本是否成功运行.

我的问题是主题行被截断.我使用简单的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
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,当我执行mailx命令时,主题行将被截断为"开发"或"生产",具体取决于已执行的脚本的版本:

mailx -s $SUBJECT $EMAIL < $MAILFILE
Run Code Online (Sandbox Code Playgroud)

我知道如果主题行包含嵌入空格,则主题行必须是双引号,但是当分配给变量时,这似乎不能正常工作.

有没有解决的办法?有没有办法逃避双引号

she*_*ter 7

您需要在$SUBJECT使用它时引用,即

mailx -s "$SUBJECT" $EMAIL < $MAILFILE
Run Code Online (Sandbox Code Playgroud)

也应该没有空间

SUBJECT="$VERSION script successful"
Run Code Online (Sandbox Code Playgroud)