Shell脚本中的while循环错误

时间:2018-07-13 23:02:28

标签: bash shell while-loop centos7

我知道这不是重复的帖子,因为其他帖子,即使它们已经涵盖了开发模式,也没有准确地处理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

我想这很容易修复我的代码,呵呵...

有什么主意吗?

谢谢, 乔卡。

0 个答案:

没有答案