为什么“if [ 0 ]”在 Bash 脚本中执行“then”语句?

为什么“if [ 0 ]”在 Bash 脚本中执行“then”语句?

本指南说:

 An if/then construct tests whether the exit status of a list of commands is 0

如果我0在 bash 中执行,它会显示:

0: command not found

因此它的退出状态不是 0,也[ 0 ]应该返回非零值退出状态。但它实际上返回 0 退出状态,并且if [ 0 ]执行的是then语句,而不是语句else
有人能解释一下吗?

答案1

[不是if语句的一部分,它是一个计算表达式的命令。[ 0 ]返回 true,因为表单的[ Expression ]计算结果始终为 0。如果您尝试,if [ 1 -eq 2 ]then语句将不会运行。

检查手册页了解更多信息。

相关内容