11.4. Commande interne ((

Cette commande interne est utilisée pour effectuer des opérations arithmétiques.

Syntaxe : (( expr_arith ))

Son fonctionnement est le suivant : expr_arith est évaluée ; si cette évaluation donne une valeur différente de 0, alors le code de retour de la commande interne (( est égal à 0 sinon le code de retour est égal à 1.

Il est donc important de distinguer deux aspects de la commande interne (( expr_arith )) :

Attention : la valeur de expr_arith n'est pas affichée sur la sortie standard.

$ (( -5 ))   => la valeur de l'expression arithmétique est égale à -5 (c.-à-d.
$            => différente de 0), donc le code de retour de (( est égal à 0
$ echo $?
0
$
$ (( 0 ))    => la valeur de l'expression arithmétique est 0, donc le code de retour
$            => de (( est égal à 1
$ echo $?
1
$

Les opérateurs permettant de construire des expressions arithmétiques évaluables par bash sont issus du langage C (ex : = + - > <=).

$ declare -i a=2 b
$ (( b = a + 7 ))
$

Le format d'écriture est libre à l'intérieur de la commande ((. En particulier, plusieurs caractères espace ou tabulation peuvent séparer les deux membres d'une affectation.

Il est inutile d'utiliser le caractère de substitution $ devant le nom d'une variable car il n'y a pas d'ambiguïté dans l'interprétation ; par contre, lorsqu'une expression contient des paramètres de position, le caractère $ doit être utilisé.

$ date
sam. 22 janv. 2022 14:22:27 CET
$
$ set $(date)
$
$ (( b = $2 +1 ))   => incrémentation du jour courant
$
$ echo $b
23
$

Code de retour de (( et structures de contrôle :