0

每次用户在菜单页面上按 1 时,我都会尝试使用 inputInfo() 方法让用户输入他们的详细信息。问题是在第一轮输入之后。如果我想输入另一个人的记录,它会不断打印出之前的记录。

4

1 回答 1

1

您的 while 循环在初始情况后有效,因为您读入的变量对您的 while 循环条件有效,因此永远不会调用提示,因为 $name 包含上一次运行的有效值。

inputInfo() {
nameRegex="[0-9]"
name=""
while [[ !$name =~ $nameRegex || -z $name ]]; do
        echo "Enter name"   
        read name   
    if  [[ $name =~ $nameRegex || -z $name ]]; then
            echo "Name can only contain numbers or blank"
    fi
done 

您可以只设置读取变量以使 while 循环上的条件失败。像上面那样将它们设置为零值将解决您的问题。

于 2013-10-25T05:28:13.693 回答