可変件名でメールを送信するUnixコマンド

可変件名でメールを送信するUnixコマンド

私たちはメールを送信するためのUNIXプログラムを作成しました。このプログラムでは、ユーザー入力に基づいて電子メールの件名と本文を取得します(Oracle同時プログラム経由)。

たとえば、

同時プログラムへの完全なユーザー入力は、$1次のように変数に保存されます。

XX_EMAIL_FILES FCP_REQID=9614696 FCP_LOGIN="APPS/sup12" \
FCP_USERID=5667 \
FCP_USERNAME="SRI" \
FCP_PRINTER="noprint" \
FCP_SAVE_OUT=Y \
FCP_NUM_COPIES=1 \
"9614556_SUP12_XX_Workflow_Stuck_AP_Invoices.csv" \
"/tmp_mnt2/attachments" \
"[email protected]" \
"This is the subject for the mail" \
"PFA for the list of Invoices that are stuck in workflow."

ここでメールのタイトルはThis is the subject for the mail私たちはそれを変数に保存します。SUBメール本文はPFA for the list of Invoices that are stuck in workflow.別の変数に保存しますFCP_BODY

今すぐメールを送信するために、以下のように書いてください。

echo "Hello,
${FCP_BODY}
Thanks,
Bommi
"| mailx -s $SUB

ところが私が受け取ったメールには本文はきちんと配信されたのですがタイトルだけありますね。This

誰でも電子メールを送信するためにタイトル全体を取得する方法を教えてもらえますか?

答え1

変数を引用する必要があります$SUB

... mailx -s "$SUB"

注:スペースを含む変数は次の影響を受けます。噴射。つまり、コマンドがあれば

mailx -s $SUB

変数には$SUB文字列が含まれています。"This is the subject for the mail"

前のコマンドは次に展開されます。

mailx -s This is the subject for the mail

つまり、-sflag(subject)はパラメータのみを取得します。This、残りの単語は追加の引数として渡され(ほとんどの場合)、ゴミのように処理されます。

代わりに、

mailx -s "$SUB"

に拡張

mailx -s "This is the subject for the mail"

これがあなたが望むものです。


関連質問と回答:

関連情報