一個<<-EOF引發的血案

lesson learnt:
改之前先備份,複製舊的註釋掉再加新的。
基礎不牢,地動山搖。

故事是這樣的,從網上撥拉下來一個定時發郵件的shell,用到了here document寫正文。新功能是再加個郵件列表到cc裏去。沒想到這麼小個改動竟然翻車了。出來混遲早要還的。原來的腳本長這樣( 應該差不多長這樣,我要是記得就回滾了
/bin/mail -s "${subject}" "${receiver}" <<-EOF
內容手動馬賽克
EOF
加cc的時候手欠把<<-EOF改了,然後腳本就需要交互了
/bin/mail -s "${subject}" "${receiver}" -c "${cc}"
內容手動馬賽克
<<-EOF
試着把-c參數改個位置
/bin/mail -s "${subject}" -c "${cc}" "${receiver}"
內容手動馬賽克
<<-EOF
然並軟
以爲是<<-EOF換行了,刪了再寫還是那個位置,是terminal切割了並沒有回車字符。
OK, fine,let's 度娘。大家原來都是這麼寫的
/bin/echo "內容手動馬賽克" | /bin/mail -s "${subject}" -c "${cc}" "${receiver}"
好醜,我先用爲敬。

做爲一個完美主義不能忍,趁着夜深人靜沒有報警換bing搜一搜。換了幾個姿勢,哦不關鍵詞,bing跟度娘差不多蠢,只知道宅男不懂攻城師。

來自力更生,繼續換姿勢,不要問我改了什麼,辣眼睛

“我好像爲了裝逼用vi改的,自己都不記得改了什麼”

jiaoben.sh: line 9: /bin/mail: Permission denied

撲街

➜ ~ ./jiaoben.sh
./jiaoben.sh: line 9: syntax error near unexpected token &lt;&lt;-'<br/>./jiaoben.sh: line 9:/bin/mail -s "${subject}" -c "${cc}" "${receiver}" | cat >> <<-EOF'

果斷上ladder用我大谷哥。
歪國人的月亮就是比較圓,各種姿勢真貼心。
https://www.cyberciti.biz/faq/linux-unix-bash-ksh-csh-sendingfiles-mail-attachments/
Tip #2: Writing Mail Body Using Here documents

The here documents (redirection) tells the shell to read input from the current source (HERE) until a line containg only word (HERE) is seen:

#!/bin/bash
...
....
mail -s "Disk Failed" [email protected]<<EOF
NAS server [ mounted at $(hostname) ] is running out of disk space!!!
Current allocation ${_SPACE} @ $(date)
EOF
...

什麼echo + EOF cat + EOF,我個智障。

PS,中間還有個插曲,改成echo後內容不能回車換行。我竟然無恥得百度了才知道要echo -e。保持對shell的敬畏,什麼瞭解熟悉都不要隨便亂說。

PPS,我真是折騰的命,什麼東西我都能給玩壞。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章