Mailx
為什麼使用“mailx”時“EOT”不結束郵件正文並發送郵件?
這是我嘗試過的:
$ mailx -s "test email" cloud Cc: "again and agina" . EOT
或者,
$ mailx -s "test email" cloud Cc: "this is the first email" << EOT
但按下後
Enter
沒有任何反應。為什麼?
thee-letter-string 沒有什麼神奇之處
EOT
。您可能已經看到它不時在 shell 腳本中的 here-document 重定向中用作分隔符。幾乎任何單詞都可以用作此處文件重定向的分隔符,儘管習慣上使用全部大寫字母的簡短描述性單詞;因此,例如,您可以mailx
通過在其標準輸入流上向實用程序提供消息來發送消息,如下所示:mailx -s 'test message' myself <<'END_MESSAGE' This is the message. Possibly on many lines. END_MESSAGE
這將使用
mailx
非互動方式向使用者發送包含兩行文本的電子郵件myself
。消息的正文被引用'END_MESSAGE'
,即,由於引用了初始分隔符 ( ) ,shell 不會嘗試在其中擴展變數等。但是,通過查看問題中的兩個命令,您似乎希望以
mailx
互動方式在實用程序中鍵入消息。如果您已在文件 ( )
dot
中設置了該選項,那麼就像您在問題的第一部分中所做的那樣,在一行上單獨鍵入一個點將結束消息正文並導致發送電子郵件:~/.mailrc``set dot
$ cat ~/.mailrc set dot
$ mailx -s 'test message' myself Cc: This is the message. Possibly on many lines. .
鍵入單獨的點並按下
Enter
會導致發送消息。如果您沒有
dot
設置選項,或者如果您在 中nodot
設置了選項~/.mailrc
,則消息正文將改為使用Ctrl+D
空行結束。按下
Ctrl+D
將目前行發送(送出、送出)到等待輸入的程序,如果目前行為空,則表示輸入結束。這不僅適用mailx
於從標準輸入流中讀取互動式輸入的大多數程序,而且適用於大多數程序。
.
在空行上使用也是在發出、或命令以插入、附加或更改目前編輯緩衝區中的ed
文本後完成輸入文本時,在編輯器中發出使用者輸入結束信號的方式。如果繼承了這個習俗,我不會感到驚訝。i``a``c``mailx``ed