为什么当我输入 bash:结果if [ false ]; then echo 'ok'; fi;
得到ok
字符串?使用变量时我也可以获得类似的结果:ok=false; if [ $ok ]; then echo 'ok'; fi;
问问题
1146 次
2 回答
10
if [ false ]
相当于if [ -n "false" ]
- 它正在测试字符串的长度。如果您正在尝试测试 的退出代码/bin/false
,请使用if false
(no [
,对于许多但不是全部,现代 shell 是一个内置的 shell,大致相当于/usr/bin/[
or /usr/bin/test
)。
于 2012-11-08T17:31:33.943 回答
3
true
并且false
不是 bash 中布尔值的内置关键字,它们与其他编程语言的方式相同
您可以模拟一个变量的真/假条件的测试,如下所示:
cond1="true"
cond2="false"
if [ "$cond1" = "true" ]; then
echo "First condition is true"
fi
if [ "$cond2" = "false" ]; then
echo "Second condition is false"
fi
当你在做:
if [ false ]
它隐式转换为
if [ -n "false" ]
其中-n
表示“测试它的长度是否大于 0:如果是,则逻辑为真,否则为逻辑假”
抛开 -true
并false
实际做一些事情,但它们是命令:
man true
man false
阅读更多关于他们的信息。
于 2012-11-08T17:34:57.230 回答