在下面的简单示例中,如果脚本中未设置CONDITION ,则运行脚本将打印“True”。然而,人们会期望它打印“False”。这种行为的原因是什么?
# Set CONDITION by using true or false:
# CONDITION=true or false
if $CONDITION; then
echo "True"
else
echo "False"
fi
Run Code Online (Sandbox Code Playgroud)
Bar*_*mar 80
的参数if是要执行的语句,并测试其退出状态。如果退出状态为,则条件为真,并且执行0中的语句。then
当$CONDITION未设置时,该语句是一个空语句,并且空语句的退出状态始终为零,表示成功。所以if条件成功。
POSIX shell 规范对此行为进行了解释:
如果没有命令名称,但该命令包含命令替换,则该命令应以上次执行的命令替换的退出状态完成。否则,该命令应以零退出状态完成。