我想做一个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
}
答案 0 :(得分:0)
首先,您必须在使用之前定义该功能。另外,在while循环的每次迭代期间检查 - 您的代码仅在第一次迭代中检查grep的结果,之后检查read
的结果。尝试
username=""
checkEmail () {
while echo "$username" | grep -vq "@" ; do
echo -n "username(email): "; read username
done
}
checkEmail
echo "Correct email: $username"