expr
scheint Klammern nicht zu mögen (in der Mathematik verwendet, um die Operatorpriorität explizit zu machen):
expr 3 * (2 + 1)
bash: syntax error near unexpected token `('
Wie drückt man die Operatorpriorität in Bash aus?
Akzeptierte Antwort:
Eine andere Möglichkeit, let
zu verwenden bash eingebaut:
$ let a="3 * (2 + 1)"
$ printf '%s\n' "$a"
9
Hinweis
Wie @Stéphane Chazelas betonte, in bash
Sie sollten ((...))
verwenden um über expr
zu rechnen oder let
für die Lesbarkeit.
Verwenden Sie für Portabilität $((...))
like @Bernhard answer.