zip_final.zipというzipファイルがあります。
このファイルを添付ファイルとして添付してメールを送信する必要があります。
また、メール本文のzipファイルにあるすべてのファイル名を表示する必要があります。
私はこのコードを持っています:
export files_list=`unzip -Zl zip_final.zip`
mailx -a ${zip_final.zip} -s "Files list | Zip file" << EOM
Hi team, sent zip file.
Files inside it are : $files_list
Thank you.
EOM
ただし、これを行うとメールは送信されません。あたかもメールコマンドが呼び出されたり実行されなかったりするのと同じです。エラーメッセージも表示されません。
mailxコマンドを使用してこのzipファイルを添付ファイルとして送信し、メール本文のzipファイル内にあるすべてのファイル名を表示する方法を提案できる人はいますか?
答え1
修正されたサンプルスクリプトは次のとおりです。
#!/bin/bash
#<$1 : zip file name
#<$2 ...: recipients
file=$1
shift
(
echo " Hi team, sent zip file."
echo " Files inside it are :"
unzip -l "$file"
echo " Thank you."
) |
mailx -A "$file" -s "Files list | Zip file" "$@"
何を見逃していますか?
mail -A
コード化される-a
編集:これはmailxの実装によって異なります。unzip -Z
予期しない
編集:出力スタイルを変更します。- メール受信者なし
${zip_final.zip}
無意味
答え2
次のように試すことができます。
export files_list=`unzip -Zl zip_final.zip`
uuencode zip_final.zip zip_final.zip |mailx -s 'Files list | Zip file' << EOM
Hi team, sent zip file.
Files inside it are : $files_list
Thank you.
EOM
uuencode
このコマンドは、バイナリファイルをASCIIに「変換」し、電子メールで送信できます。
答え3
コマンドが実行されない理由は-a ${zip_final.zip}
ただ-a zip_final.zip
。
${zip_final.zip}
平均変数値それはzip_final.zip
。ただし、これはシェルが解釈できない誤った変数名なので、エラーを返しますbad substitution
。これが問題のようです。
${zip_final.zip}
次に置き換えると、zip_final.zip
スクリプトが機能します。