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

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

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 ??

答え1

電子メールアドレスを取得する「外部フラットファイル」がそれほど面白くない場合(フォーマットがよく指定されている場合)、次のものを使用できます。

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

答え2

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

2つの答えを組み合わせてくれてありがとう。

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

echo "$(cat < /home/user/すべてのユーザー情報)" | mail -s "私のトピック" "${addr[@]}"

乾杯

関連情報