我只是想提示输入用户名和密码,并在三次错误尝试后让 while 循环结束。我认为这与我增加计数的方式有关。我的代码返回“请输入用户名和密码部分,然后进入无限循环。
#!/bin/bash
myusername="cloud_user"
mypassword="userisawesome"
count=0
echo "Enter Username: "
read username
echo "Enter Password: "
read password
while [ $count -lt 3 ]
do
if [ -z "$username" ] || [ -z "$password" ]; then
echo "Please enter a username and password"
count=$count+1
elif [["$username"= "$myusername" && "$password"= "$mypassword"]]; then
echo "$HOME $TERM"
else
count=$count+1
fi
done
正如markp-fuso所说,你的台词
count=$count+1
就是问题所在。
这样写,它只会将存储在
count
中的字符串与字符串 +1
连接起来。count
值将是 0+1
,然后是 0+1+1
、0+1+1+1
、...
你有2个选择:
while
更改 for count in {0..2}
循环,并且无需自己更新 count
值;count=$count+1
替换为 count=((count+1))
,甚至更好:((count++))
。