Bash脚本 - if块中的布尔值?

时间:2013-08-01 22:21:14

标签: linux bash unix boolean

我尝试了此SO帖子中的代码 - How to evaluate a boolean variable in an if block in bash?,但它不起作用。看起来BASH中没有布尔值。有没有完美的解决方法让我在BASH中设置和检查布尔值?

我的代码 -

#!/bin/bash
flag=true
if [ $flag ]
echo 'True'
#flag=false
#echo 'Now changed to false' 
fi

即使第2行中的flag = false,输出仍为True。为什么?

2 个答案:

答案 0 :(得分:10)

尝试不使用方括号,例如

#!/bin/bash
flag=true
if $flag ; then
   echo 'True'
   #flag=false
   #echo 'Now changed to false' 
fi

答案 1 :(得分:4)

由于这部​​分人类测试'它评估为真。 -

 [ expression ]
         string        True if string is not the null string.

您需要使用类似 -

的内容
#!/bin/bash
flag=1
if [ ${flag} -eq 1 ]
then
    echo 'True'
    #flag=0
    #echo 'Now changed to false' 
fi