"如果" "直到"在bash脚本中给出不同的结果

时间:2016-05-20 06:03:38

标签: bash shell

为什么我会得到不同的结果,具体取决于我是否有until语句或if语句?

# compare dates

a=12
b=8

if [ $a -le $b ]; then
    echo "it is not less than using if"
fi  

until [ $a -le $b ]
do
    echo "it is less than using until !?!?!?"
done

if语句失败,但until语句永久打印,即使它们完全相同。为什么?

谢谢。这真的有助于我的理解。

2 个答案:

答案 0 :(得分:4)

  

尽管它们是完全相同的条件

这是不正确的。 if语句说“如果条件为 true ,则执行以下命令”。 until语句说“如果条件为 false ,则执行以下命令(并且只要条件保持 false ,就继续执行)”。

您可能正在考虑while声明。 while语句说“如果条件为 true ,则执行以下命令(并且只要条件保持 true ,就继续执行)”。

答案 1 :(得分:0)

如果是分支运算符,则直到是循环运算符(循环运行直到满足条件)。在你的情况下,条件不满足(12不小于或等于8),因此它将无限循环地回显关于a和b的值的不一致信息。

你的if也是错的,因为当a< = b时它会回应“它不小于使用if”并且当a>时它什么都不做湾