+ -
当前位置:首页 → 问答吧 → while循环哪错了?

while循环哪错了?

时间:2011-03-14

来源:互联网

为什么我判断当等于7或者等于8 不可以,  而判断只等于7就可以呢 ?  我检查了语法没有错误啊

echo -n Please input switch slot \(7 or 8\):
read switch_solt
while [ "X${switch_solt}" != "X7"
do
    echo -n Please input switch slot \(7 or 8\):
    read switch_solt
done

这个成功!





echo -n Please input switch slot \(7 or 8\):
read switch_solt
while [ "X${switch_solt}" != "X7" -o "X${switch_solt}" != "X8" ]
do
    echo -n Please input switch slot \(7 or 8\):
    read switch_solt
done
这个为什么不成功?该如何修改?

作者: chinaboywg   发布时间: 2011-03-14

逻辑混乱
-o是或,-a是和,搞清楚
  1. #! /bin/bash
  2. read -p "key in a slot : " switch_solt
  3. while [ "X${switch_solt}" != "X7" -a "X${switch_solt}" != "X8" ]
  4. do
  5. echo -n Please input switch slot \(7 or 8\):
  6.         read switch_solt
  7. done
复制代码

作者: 昭襄王   发布时间: 2011-03-14

回复 昭襄王


    呵呵 知道了 谢谢!

作者: chinaboywg   发布时间: 2011-03-14

回复 chinaboywg


    我测试的好使啊!!!不知道你是怎么回事。

作者: db2-zhang   发布时间: 2011-03-14

...不等于7或者不等于8,
这个不是恒真的吗?

作者: cjaizss   发布时间: 2011-03-14



QUOTE:
回复  chinaboywg


    我测试的好使啊!!!不知道你是怎么回事。
db2-zhang 发表于 2011-03-14 13:29




    echo -n Please input switch slot \(7 or 8\):
read switch_solt
while [ "X${switch_solt}" != "X7" -o "X${switch_solt}" != "X8" ]
do
    echo -n Please input switch slot \(7 or 8\):
    read switch_solt
done
这个为什么不成功?该如何修改?


你输入8就退不出了
按理是该跳出循环的

作者: chinaboywg   发布时间: 2011-03-14



QUOTE:
回复  chinaboywg


    我测试的好使啊!!!不知道你是怎么回事。
db2-zhang 发表于 2011-03-14 13:29




    反过来就是等于7或等于8就跳出循环

作者: chinaboywg   发布时间: 2011-03-14

是的!还需要认真看看!

作者: 你为泪而流   发布时间: 2011-03-14



QUOTE:
回复  昭襄王


    呵呵 知道了 谢谢!
chinaboywg 发表于 2011-03-14 13:23




    真知道了?知道什么了?

作者: 昭襄王   发布时间: 2011-03-14

回复 chinaboywg


    恩!明白了,我刚测试了一下,把-o 换成-a 就好使了!

作者: db2-zhang   发布时间: 2011-03-14

回复 昭襄王


    $1 -a $2
当$1和$2都为真的时候,表达式为真,有一个为假表达式为假,所以要想不进入while循环,必须是$1,$2有一个为假,或都为假。

作者: db2-zhang   发布时间: 2011-03-14



QUOTE:
回复  chinaboywg


    恩!明白了,我刚测试了一下,把-o 换成-a 就好使了!
db2-zhang 发表于 2011-03-14 14:38




    那我现在要求只能输入 1 2 3 4 5 6 9 10 11 12 13 14 中的一个 否则就需要重新输入 你看如何做

作者: chinaboywg   发布时间: 2011-03-14