web-dev-qa-db-ja.com

外部フラットファイルの電子メールアドレスを使用したシェルスクリプトを使用した電子メール

シェルスクリプトを使用したメール からalexkowalskiスクリプトを使用しています

MAILADDR=([email protected], [email protected], [email protected])
for i in "${MAILADDR[@]}"
    do
         echo "Mail test..." | mail -s "Mail test subject..." $i
    done

私の質問は、外部フラットファイルからMAILADDR配列を読み取る方法ですか?

そして、電子メールの本文を置き換える外部フラットファイルを挿入する方法

echo"/home/user/information-for-any-user.txt"  | mail -s "Mail test subject..." $i ??
2

電子メールアドレスの取得元である「外部フラットファイル」があまり面白くない(適切にフォーマットされている)場合は、次のようなものを使用できます。

mail -s "My subject" $(cat /this/is/the/external/flat/file.txt) < /home/user/information-for-any-user.txt
3
user43791

mailコマンドで複数のアドレスを指定できます。

  1. フラットファイルにglob文字がなく、電子メールアドレスが空白で区切られていると仮定します。

    echo "Mail test..." | mail -s "Mail test subject..." $(< address.file)
    
  2. 改行で区切られたアドレスのリストをbash配列に読み込みます

    mapfile -t addr < address.file
    echo "Mail test..." | mail -s "Mail test subject..." "${addr[@]}"
    
3
glenn jackman

多くの感謝、両方の答えを組み合わせることは仕事をしました。

mapfile -t addr </ home/user/address-file#(1行に1つのメールアドレス)

echo "$(cat </ home/user/information-for-any-user)" | mail -s "私の件名" "$ {addr [@]}"

乾杯

0