【发布时间】:2017-09-23 17:14:53
【问题描述】:
我有以下代码:
#!/bin/ksh
echo "1) Option 1"
echo "2) Option 2"
echo "3) Option 3"
echo "4) Option 4"
opt=0
while [ x$opt = "x" ] || [ $opt != "1" ] || [ $opt != "2" ] || [ $opt != "3" ] || [ $opt != "4" ]; do
printf "Enter [1|2|3|4] : "
read -r opt
done
echo "Option selected : $opt
while [ x$opt = "x" ] 的意思是“$opt 为空”,以防您想知道。
这是输出:
Will:/home/will> ./script.ksh
Enter [1|2|3|4] :
Enter [1|2|3|4] : jde
Enter [1|2|3|4] : 1
Enter [1|2|3|4] : 2
Enter [1|2|3|4] : 3
Enter [1|2|3|4] : 4
Enter [1|2|3|4] :
所以当没有输入任何内容或出现意外情况时,它会循环,OK。
但是为什么当它应该提示最后一个echo消息时,输入1/2/3和4时它仍然循环?
编辑:
我在 while 循环中添加了一个echo $opt,它打印了我这个:
Enter [1/2/3/4] : d
d
Enter [1/2/3/4] : 1
1
Enter [1/2/3/4] :
所以 $opt 应该收到用户输入,但 while 仍然没有中断。
【问题讨论】:
标签: shell while-loop ksh