1

ユーザーが「@」を入力するまでwhileループを実行したいのですが、これは私のコードですが、機能していません:

echo -n "username(email): "
read username 
checkEmail $username

checkEmail () {

username=$1
echo $username | grep "@"
while [ ! $? -eq 0 ] ; do
        echo -n  "username(email): "; read username
done
}
4

1 に答える 1

0

まず、関数を使用する前に定義する必要があります。さらに、while ループの各反復中にチェックします。コードは最初の反復でのみ grep の結果をチェックし、readその後の結果をチェックします。試す

username=""
checkEmail () {
  while echo "$username" | grep -vq "@" ; do
    echo -n "username(email): "; read username
  done
}

checkEmail
echo "Correct email: $username"
于 2013-10-12T15:29:06.510 に答える