expr
ne semble pas aimer les parenthèses (utilisées en mathématiques pour exprimer la priorité des opérateurs) :
expr 3 * (2 + 1)
bash: syntax error near unexpected token `('
Comment exprimer la priorité de l'opérateur en bash ?
Réponse acceptée :
Une autre façon d'utiliser let
bash intégré :
$ let a="3 * (2 + 1)"
$ printf '%s\n' "$a"
9
Remarque
Comme l'a souligné @Stéphane Chazelas, dans bash
vous devez utiliser ((...))
faire de l'arithmétique sur expr
ou let
pour la lisibilité.
Pour la portabilité, utilisez $((...))
comme la réponse de @Bernhard.