Bash
為什麼“$(())”命令的輸出為 0?
我使用了
$(())
命令,我看到了這個錯誤:bash: 0: command not found
為什麼會出現這個錯誤?
是
$(( ))
算術替換或算術擴展。在其中,您可以進行(整數)算術運算,shell 將執行它們並將整個表達式替換為這些運算的結果。你經常看到它像在
count=$(( count + 1 ))
由於這裡 shell 沒有什麼可做的(算術替換為空),因此您的
bash
shell 決定結果為零。您將其用作命令,這意味著 shell 將嘗試將結果 ,
0
作為命令執行。它失敗了,並告訴你原因(“0:找不到命令”)。
這是一個空的算術替換,似乎是一個極端情況,在不同的 shell 中被不同地對待。
bash
shell 與zsh
andpdksh
(在ksh
OpenBSD 上)一起嘗試執行0
, whiledash
並yash
抱怨:$ dash -c '$(( ))' dash: 1: arithmetic expression: expecting primary: " " $ yash -c '$(( ))' yash: arithmetic: a value is missing
POSIX標准說
作為擴展,shell 可以辨識超出列出的算術表達式。
… 這可能是
bash
,zsh
和pdksh
所做的(即,他們將空表達式辨識為“零”)。