小编典典

重击“如果 [假];” 返回真而不是假——为什么?

all

为什么会出现以下输出True

#!/bin/sh

if [ false ]; then
    echo "True"
else
    echo "False"
fi

True即使条件似乎另有说明,这也将始终输出。如果我删除括号[],那么它可以工作,但我不明白为什么。


阅读 63

收藏
2022-06-13

共1个答案

小编典典

您正在运行带有参数“false”的[(aka test) 命令,而不是运行 command
false。因为“false”是一个非空字符串,所以test命令总是成功的。要实际运行该命令,请删除该[命令。

if false; then
   echo "True"
else
   echo "False"
fi
2022-06-13