何故か結構苦戦してしまった。
やりたいことは下記設定ファイルを読み込んで、メールアドレス部分をチェックするというもの。
userlist.conf
user1 user1@test.co.jp
user2 user-2@test.co.jp
user3 user_3@test.co.jp
まずは失敗例
test.sh
# !/bin/bash
LIST=./userlist.conf
while read F1 F2
do
if [ $(echo ${F2} | egrep -e '[-\w\d_]+\@[-\w\d_]+\.+[-\w\d_]+') ]; then
echo "match!"
else
echo "no match!"
fi
done < ${LIST}
exit 0
実行結果は"no match!"が表示されてうまくいかない...
いろんなところをめぐって、最終的に成功したものはこちら
test.sh
# !/bin/bash
LIST=./userlist.conf
while read F1 F2
do
if [ $(echo ${F2} | egrep -e '^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+$') ]; then
echo "match!"
else
echo "no match!"
fi
done < ${LIST}
exit 0
個人的にはうまくいかなかった箇所は@マークかな...とは思うのだが(@をつけると何故か失敗しだした)
成功したほうは大して変わりないように見える...(\w\dが問題だった?)
原因究明はおいおいということで