0

我尝试了这篇 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。为什么 ?

4

2 回答 2

10

试试不带方括号,像这样

#!/bin/bash
flag=true
if $flag ; then
   echo 'True'
   #flag=false
   #echo 'Now changed to false' 
fi
于 2013-08-01T22:23:32.337 回答
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
于 2013-08-01T22:31:41.773 回答