12. Expansion arithmétique

L'expansion arithmétique fournit un outil puissant pour réaliser des opérations arithmétiques (entières) dans des scripts. Traduire une chaîne en une expression numérique est relativement immédiat en utilisant des apostrophes inverses, des double parenthèses ou let.

Variations

Expansion arithmétique avec apostrophes inverses (souvent utilisée en conjonction avec expr)
z=`expr $z + 3`          # La commande 'expr' réalise l'expansion.
Expansion arithmétique avec double parenthèses, et utilisant let

L'utilisation des apostrophes inverses dans le cadre de l'expansion arithmétique s'est trouvée dépréciée en faveur des parenthèses doubles ((...)), $((...)) ou de la syntaxe très pratique en let.

z=$(($z+3))
z=$((z+3)                                   #  Correct aussi.
                                            #  À l'intérieur de parenthèses
                                            #  doubles, le déréférencement de
                                            #  paramètres est optionnel.

# $((EXPRESSION)) est une expansion arithmétique.
# À ne pas confondre avec une substitution de commande.


# Vous pouvez aussi utiliser des opérations à l'intérieur de parenthèses doubles
# sans affectation.

  n=0
  echo "n = $n"                             # n = 0

  (( n += 1 ))                              # Incrément.
# (( $n += 1 )) est incorrect!
  echo "n = $n"                             # n = 1


let z=z+3
let "z += 3"  #  En présence d'apostrophes doubles, les espaces sont permis
              #+ dans l'affectation des variables.
#  'let' réalise une évaluation arithmétique, plutôt qu'une expansion à
#+ proprement parler.

Exemples d'expansions arithmétiques dans des scripts: