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
コマンドに複数のアドレスを提供できます。
フラットファイルにglob文字がなく、電子メールアドレスがスペースで区切られているとします。
echo "Mail test..." | mail -s "Mail test subject..." $(< address.file)
改行で区切られたアドレスのリストを 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[@]}"
乾杯