expr 算術括弧: 3 * (2 + 1)

expr 算術括弧: 3 * (2 + 1)

expr括弧を嫌うようです(数学で明示的な演算子の優先順位に使用されます)。

expr 3 * (2 + 1)
bash: syntax error near unexpected token `('

Bashで演算子の優先順位を表現する方法は?

ベストアンサー1

代わりに算術拡張を使用できます。

echo "$(( 3 * ( 2 + 1 ) ))"
9

私の個人的な意見では、を使用するよりもこれが良いようですexpr

~からman bash

算術拡張 算術拡張を使用すると、算術式を評価して結果を変更できます。算術拡張の形式は次のとおりです。

         $((expression))

式は二重引用符で囲まれたように処理されますが、括弧内の二重引用符は特に処理されません。式のすべてのトークンは、パラメータ拡張、文字列拡張、コマンド置換、および引用符の削除を受けます。算術拡張は入れ子にすることができます。

評価は、以下の算術評価項目に記載されている規則に従って行われます。式が無効な場合、bash は失敗を示すメッセージを出力し、置換は発生しません。

おすすめ記事