我知道这不是重复的帖子,因为其他帖子,即使它们已经涵盖了开发模式,也没有准确地处理while子句。有很多使用“ if”而不是“ while”的示例。
我尝试了许多代码,但是我的“ while”子句无法正常工作! :\
我正在使用:CentOS 7x(64位)和shell bash
#!/bin/bash
bkp="x"
while [[ "$bkp" != "Y" || "$bkp" != "y" || "$bkp" != "N" ]]
do
echo $bkp
read bkp
done
exit 0
我跑步时:
bash -x ./script
+ bkp=x
+ [[ x != \Y ]]
+ echo x
x
+ read bkp
我无法退出while循环! :\ while子句的比较不起作用!
我也尝试过:
#!/bin/bash
bkp="x"
while [[ "$bkp" != "Y" ]] || [[ "$bkp" != "y" ]] || [[ "$bkp" != "N" ]]
do
echo $bkp
read bkp
done
exit 0
和
#!/bin/bash
bkp="x"
while [ "$bkp" != "Y" -o "$bkp" != "y" -o "$bkp" != "N" ]
do
echo $bkp
read bkp
done
exit 0
另一个例子:
#!/bin/bash
bkp="x"
while [ $bkp != 'Y' -o $bkp != 'y' -o $bkp != 'N' ]
do
echo $bkp
read bkp
done
exit 0
另一个例子:
#!/bin/bash
bkp="x"
while [[ $bkp != 'Y' ]] || [[ $bkp != 'y' ]] || [[ $bkp != 'N' ]]
do
echo $bkp
read bkp
done
exit 0
在最后一种情况下,当我运行脚本时:
bash -x ./script
+ bkp=x
+ '[' x '!=' Y -o x '!=' y -o x '!=' N ']'
+ echo x
x
+ read bkp
Y
+ '[' Y '!=' Y -o Y '!=' y -o Y '!=' N ']'
+ echo Y
Y
+ read bkp
y
+ '[' y '!=' Y -o y '!=' y -o y '!=' N ']'
+ echo y
y
+ read bkp
N
+ '[' N '!=' Y -o N '!=' y -o N '!=' N ']'
+ echo N
N
+ read bkp
我想这很容易修复我的代码,呵呵...
有什么主意吗?
谢谢, 乔卡。