1

我想做一个while循环,直到用户输入ab“@”,这是我的代码,但它不起作用:

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 回答