为什么如果 [ 假 ];然后回声"好";FI;打印好吗?



为什么当我输入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)。

truefalse不是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否则否则"

旁边-truefalse实际上做某事,但它们是命令:

man true
man false

了解更多有关它们的信息。

相关内容

  • 没有找到相关文章

最新更新