Jor*_*rdo 4 bash logic while-loop
我尝试了许多不同的小括号、引号、、、的组合||,-o但脚本在没有无限循环的情况下工作的唯一方法是没有 while 循环比较中的 OR,如下所示:while [ $name != Jorge ]] ; do ...这是我想要运行的脚本的示例:
#!/bin/bash
echo "What is my name: "
read name
while [ $name != "Jorge" ] || [ $name != "Eduardo" ] ; do
echo "Not. Try again: "
read name
done
echo "Well done!"
Run Code Online (Sandbox Code Playgroud)
小智 6
您应该在 while 语句的条件中使用&&而不是。||
您正在尝试从标准输入读取一个名称,如果该名称是“Jorge”或“Eduardo”,那么您就完成了。当将其置于 while 条件下时,当名称不是“Jorge”并且名称不是“Eduardo”时,您希望继续循环。
您当前的条件表明,如果名称不是“Jorge”或名称不是“Eduardo”,则继续循环。并且名称不能同时为两者。