为什么“$(())”命令的输出是0?

为什么“$(())”命令的输出是0?

我使用了该$(())命令,并看到了此错误:

bash: 0: command not found

为什么会出现这个错误?

答案1

$(( ))是算术替换或算术展开。在其中,您可以执行(整数)算术运算,shell 将执行它们并用这些运算的结果替换整个表达式。

你经常看到它像这样使用

count=$(( count + 1 ))

由于 shell 在此无需执行任何操作(算术替换为空),因此您的bashshell 决定结果为零。

您将其用作命令,这意味着 shell 将尝试将结果 ,0作为命令运行。

它失败了,并告诉您原因(“0:找不到命令”)。


这是一个空的算术替换,似乎是一个在不同 shell 中以不同方式处理的极端情况。 shellbashzshand pdkshksh在 OpenBSD 上)一起尝试执行0, whiledashyash抱怨:

$ dash -c '$(( ))'
dash: 1: arithmetic expression: expecting primary: " "
$ yash -c '$(( ))'
yash: arithmetic: a value is missing

POSIX标准

作为扩展,shell 可以识别超出列出的算术表达式。

...这可能是bash,zshpdksh的作用(即,它们将空表达式识别为“零”)。

相关内容