2011-05-25 258 views
3

我有一個簡單的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 

我知道主題行需要在如果它包含嵌入空格,則使用雙引號,但在分配給變量時似乎不能正確運行。

有沒有辦法解決?有沒有辦法逃脫雙引號

回答

6

你需要爲你使用它來引用$SUBJECT,即

mailx -s "$SUBJECT" $EMAIL < $MAILFILE 

也應該有

SUBJECT="$VERSION script successful" 
+0

看來工作沒有空間(主要是)當我這樣做時:「$ {SUBJECT}」。但是,由於$ SUBJECT正在被分配一個字符串作爲變量($ VERSION),所以字符串現在是「$ VERSION script successful」或「$ VERSION script has error(s)」。任何想法如何獲得變量$ VERSION解析爲一個字符串? – elpisu 2011-05-25 19:51:28

+1

1.我注意到你的任務中有一個空間,比如'SUBJECT =「....」。 2.你描述的行爲聽起來像你在你的任務上有單引號,即'SUBJECT ='...''。現在去睡覺。將在早上檢查。祝你好運。 – shellter 2011-05-26 02:18:12