2016-06-10 72 views
0

當我嘗試手動運行下面的腳本時,出現以下2個錯誤輸出。我不明白的是爲什麼它會抱怨找不到')'的匹配字符?在那裏我好像提取then/fi裏面的內容,並將它放在一個文件中,然後單獨運行它,它可以很好地發揮作用,因爲它可以發送電子郵件。意外的EOF,同時尋找匹配')'

./rsnapshot-log-checker: line 15: unexpected EOF while looking for matching `)' 
./rsnapshot-log-checker: line 25: syntax error: unexpected end of file 

grep "ERROR" /var/log/rsnapshot.log | \ 
while read line ; do 
     echo "$line" | grep "ERROR" 
     if [ $? = 0 ] 
     then 
       [email protected] 
       subject="Error rsnapshot - `hostname`" 
       from=`hostname`@bla.com 
       daemail=$(cat <<! <-- line 15 
         From: $from 
         To: $to Subject: 
         $subject You might want to check this... !) <-- maching haracter for) 

       echo "$daemail" | /usr/sbin/sendmail -t 
     fi 
done 
<-- line 25 

回答

1

您正在使用此文檔重定向運算符(< <)在第15行,這是造成問題。 使用下列內容:

daemail=$(cat 
     echo "From:" $from 
     echo "To:" $to "Subject:" 
     echo $subject "You might want to check this... !") 
+0

燁似乎已經完成了帽子戲法。雖然它仍然有點困擾我爲什麼它自己的工作,而不是在if語句。 –

2

這裏的文件分隔符has to appear on a line by itself

+0

是的,我可以看到,這是這裏的問題 - 但是Nishu答案提供了一個很好的清潔解決方案,所以我接受了他的答案:)你+1 –