expr
括弧を嫌うようです(数学で明示的な演算子の優先順位に使用されます)。
expr 3 * (2 + 1)
bash: syntax error near unexpected token `('
Bashで演算子の優先順位を表現する方法は?
ベストアンサー1
代わりに算術拡張を使用できます。
echo "$(( 3 * ( 2 + 1 ) ))"
9
私の個人的な意見では、を使用するよりもこれが良いようですexpr
。
~からman bash
算術拡張 算術拡張を使用すると、算術式を評価して結果を変更できます。算術拡張の形式は次のとおりです。
$((expression))
式は二重引用符で囲まれたように処理されますが、括弧内の二重引用符は特に処理されません。式のすべてのトークンは、パラメータ拡張、文字列拡張、コマンド置換、および引用符の削除を受けます。算術拡張は入れ子にすることができます。
評価は、以下の算術評価項目に記載されている規則に従って行われます。式が無効な場合、bash は失敗を示すメッセージを出力し、置換は発生しません。