✉️
ShellScriptでEmailをバリデーションしてみる
ShellScriptでEmailをバリデーションしてみる
ちょっとしたスクリプトを作成するときふとバリデーションをかけてみたくなったのでメモとして残しておく。
目標
- Emailのinputしたときxx@xxx.xxx等のフォーマットでバリデーションしたい
- 間違えて入力した時のために再度inputを求めるようにしたい
環境
- macOS Bigsur 11.1
- zsh
実装
case文を使ってEmailを判定する
ARGS="Email"
case $ARGS in
"Email" ) echo $ARGS ;;
* ) echo "not Email" ;;
esac
case文は変数の値を判定して結果を返す[1]。
また、Emailの判定は正規表現を使うと良さそう[2]。
xxx@xxx.xxx validation format
*@?*.?*
また目標の一つである「間違えて入力した時のために再度inputを求めるようにしたい」を実現するためにfunctionで関数内で再帰させる。
funcrion sample() {
ARGS=${1}
case $ARGS in
"Email" ) echo $ARGS ;;
* ) echo "not Email" ; read ARGS ; sample $ARGS ;;
esac
これで、再入力をすることができる。
最終的には以下のようになります。
emailValidation.sh
function emailValidation() {
ARGS=${1}
case $ARGS in
# xxx@xxx.xxx validation format .
*@?*.?*) echo "accept" ;;
*) echo "Your input email address data is incorrect format , Please retry ."; /bin/echo -n "» " ; read email; emailValidation $email ;;
esac
}
# call emailValidation
read email
emailValidation $email
これで完了です。
-
「3分理解!シェルスクリプトでのcaseの使い方」 https://eng-entrance.com/linux-shellscript-case ↩︎
-
「Shell Programming and Scripting EMail Address Validation (Shell Script)」https://www.unix.com/shell-programming-and-scripting/110157-email-address-validation-shell-script.html ↩︎
Discussion