アプリ版:「スタンプのみでお礼する」機能のリリースについて

■listファイルの中身
-------------------------------------
tanaka 100 tanaka@******.com
yoshida 90 yoshida@******.com
watanabe 80 info@******.com
domadoma 70 shop@******.com 

それぞれのユーザに点数を報告したいのですが、
listファイルの1行ごとにメールを送信して
他ユーザとは干渉しないようにしたいのです。

■結果的にこうしたい。
--------------------------------------
tanaka@******.comへのメール内容
tanakaさんへ。今回のテストは100点でしたよ。

shop@******.comへのメール内容
domadomaさんへ。今回のテストは70点でしたよ。

といった処理にしたいのですが、現段階では
どういったスクリプトを書けばよいのかわかりません。

■現在のスクリプト状況
-----------------------------------------------------------
#!/bin/bash
TODAY=`date +"%y/%m/%d"`

USER=` less list | awk '{print $1}'`
POINT=` less list | awk '{print $2}'`
ADDRES=`less list | awk '{print $3}'`

printf "
YOUR POINT is $POINT
USER POINT ADRRES
$USER $POINT $ADDRES
" > m.body.$$

SUBJECT="$TODAY Hi! Your point is announced"
mail -s "$SUBJECT" "$ADDRES" < m.body.$$

上記ではメール本文をm.body.$$にて作成している
つもりが、他ユーザのデータも表示されてしまいます。
1ユーザごとにそのユーザ情報のみをメールする
スクリプトはどのようにしたらかけますでしょうか

A 回答 (1件)

1行ずつ読み込んで処理すればいいのでは?



こんな感じかと。
★動作未確認です
 また、見やすくするため全角スペースを使用してあります。

-----------------------------------------------------------
#!/bin/sh

TODAY=`date +%y/%m/%d`
while read line; do
  USER=`echo "$line" | awk '{print $1}'`
  POINT=`echo "$line" | awk '{print $2}'`
  ADDRES=`echo "$line" | awk '{print $3}'`

  printf "
YOUR POINT is $POINT
USER POINT ADRRES
$USER $POINT $ADDRES
" > m.body.$$

  SUBJECT="$TODAY Hi! Your point is announced"
  mail -s "$SUBJECT" "$ADDRES" < m.body.$$
done < list
    • good
    • 0
この回答へのお礼

連絡遅れてすみません。ありがとうございます。
$lineなんてのがあるんですね!!!
少し改良したらうまくいきましたっ

もっと勉強します!!

お礼日時:2009/07/27 22:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!