我尝试了此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。为什么?
答案 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