为什么当我输入bash: if [ false ]; then echo 'ok'; fi;
时,我会得到 ok
字符串?使用变量时,我也可以得到的类似结果: ok=false; if [ $ok ]; then echo 'ok'; fi;
if [ false ]
等于 if [ -n "false" ]
-它正在测试字符串的长度。如果您要测试/bin/false
的退出代码,请使用if false
(无[
,对于许多但并非全部,现代壳是一个内置的外壳,大致相当于/usr/bin/[
或/usr/bin/test
)。
true
和 false
不是bash中布尔的关键字,就像其他编程语言相同的方式
您可以模拟变量的True/False条件的测试,如下所示:
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否则否则"
旁边-true
和false
实际上做某事,但它们是命令:
man true
man false
了解更多有关它们的信息。