スクリプトのコマンドラインにCTRL-Dをどのように渡しますか?

スクリプトのコマンドラインにCTRL-Dをどのように渡しますか?

このラインを使っています。

 ( cat bodyText.txt; uuencode backup.tar ) | mail -s "backup" [email protected]

cronによってトリガされるbashスクリプトから。

行はほぼ完璧ですが、メッセージと添付ファイルを送信できるように入力を待っているCtrl間停止します。D

Ctrlこの行を機能させるには、bashスクリプトに-をどのように含める必要がありますか?D

答え1

  • uuencode:uuencode名<ソースファイル

  • たぶん最後の空行が必要かもしれません。; echo -e "\n\n" ;閉じ括弧の前に追加して再試行しますか? -

あなたの場合は次のとおりです。

( cat bodyText.txt; uuencode backup.tar < backup.tar ; echo -e "\n\n" ; ) | mail -s "backup" [email protected]

別の方法は、mutt添付ファイルをよりよく処理し、MIMEタイプなどを理解するために使用することです。

mutt -s "the subject" -a backup.tar -- [email protected] < bodyText.txt

答え2

他の人が言ったように、Control-Dはシェルにファイルの終わりを送信するように指示する方法です。ストリームが閉じられると、ストリームから読み取られるプロセスはファイルの終わりに達する必要があります。

しかし、すでに存在するものをより完全な形で実装したいようです。もちろんこれを行う理由があるかもしれませんが、既存のソリューションに興味があるならmpack/マンパックファイルをMIMEエンコードして電子メールで送信するコマンドラインプログラム。あなたは読むことができますマンページあなたの要件を満たしていることを確認してください。

答え3

はい、意味は:

uuencode backup.tar < bodyText.txt | mail -s "backup" [email protected]

答え4

Ctrl + Dを避けるには、詳細モード(-v)を使用してください。

echo -e 'Mail body'| mail -v -s 'Mail Subject' [email protected]

関連情報