Bash
在 bash 中計算整數表達式
我有一組生成整數表達式的管道命令。一個範例看起來
(1 +(0x1f+0x02))
我可以評估這個表達式(得到結果值),通過將它括在 中$()
,所以:$ echo $((1 +(0x1f+0x02))) 34
我有興趣讓它在單個命令中工作,所以我嘗試將我的整個系列管道命令包含在 中
$()
,但似乎 bash 無法評估表達式。這個片段可能複制了我看到的問題:$ TEST="(1 +(0x1f+0x02))" $ echo "$TEST" (1 +(0x1f+0x02)) $ echo $($TEST) bash: (1: command not found
不知道我在這裡缺少什麼
算術擴展發生在
$((...))
, while$(...)
是命令替換。由於沒有名為 的命令(1
,它是變數值的第一個單詞,因此當 shell 嘗試在命令替換中用作命令TEST
時,會從 shell 收到錯誤消息。$TEST
你可能想做
expression='(1 +(0x1f+0x02))' echo "$(( "$expression" ))"
對於
bash
早於 4.4 版的版本,刪除內部雙引號集。4.4 版是第一個bash
允許在算術擴展中擴展雙引號標識符的版本。