Sommaire

Substitution d’expressions arithmétiques

ksh

bash

Les caractères de substitution de commandes ont été présentés dans la section Substitution de commandes de ce chapitre. Il existe également des caractères spéciaux du shell permettant de substituer une expression arithmétique par son résultat.

Syntaxe

commande argument1 $((expression-arithmétique))  ... argumentn

Exemple

Rappel sur la substitution de commandes :

$ echo "Nombre d’utilisateurs connectes : `who | wc -l`" 
Nombre d’utilisateurs connectes :        5

Écriture équivalente :

$ echo "Nombre d’utilisateurs connectes : $(who | wc l)" 
Nombre d’utilisateurs connectes :        5

La commande (( )) n’affiche rien :

$ x=2 
$ ((x+1))           # L’expression vaut: 3 
$ ((x=x+1))         # x est affecté avec 3 et l’expression vaut 3 
$ echo $x 
3

Donc la commande (( )) est substituée par du vide :

$ echo "Apres incrementation, x vaut : `((x=x+1))`" 
Apres incrementation, x vaut : 

Pour substituer l’expression par sa valeur, il faut utiliser les caractères spéciaux du shell $(( )).

$ x=2 
$ echo "Apres incrementation, x vaut : $((x=x+1))" 
Apres incrementation, x vaut : 3 
$ echo $x 
3

Ne pas confondre (( )) et $(( )). (( )) est une commande interne au shell et $(( )) sont des caractères spéciaux du shell au même titre que `` ou $().