我的 while 循环对于这个 bash 脚本来说是无限的,遇到了问题

问题描述 投票:0回答:1

我只是想提示输入用户名和密码,并在三次错误尝试后让 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
bash while-loop scripting
1个回答
0
投票

正如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
    值;
  • 您可以使用 BASH 中的算术评估,将行
    count=$count+1
    替换为
    count=((count+1))
    ,甚至更好:
    ((count++))
© www.soinside.com 2019 - 2024. All rights reserved.