De façon similaire à la commande let, la construction ((...)) permet une évaluation arithmétique. Dans sa forme la plus simple, a=$(( 5 + 3 )) exécutera le calcul << 5 + 3 >>, soit 8, et attribuera sa valeur à la variable << a >>. Néanmoins, cette construction en double parenthèse est aussi un mécanisme permettant la manipulation de variables à la manière du C dans Bash.
Exemple 9-28. Manipulation, ç la façon du C, de variables
#!/bin/bash
# Manipuler une variable, style C, en utilisant la construction ((...)).
echo
(( a = 23 )) # Initialiser une valeur, style C, avec des espaces des deux
# côtés du signe "=".
echo "a (initial value) = $a"
(( a++ )) # Post-incrémente 'a', style C.
echo "a (after a++) = $a"
(( a-- )) # Post-décrémente 'a', style C.
echo "a (after a--) = $a"
(( ++a )) # Pre-incrémente 'a', style C.
echo "a (after ++a) = $a"
(( --a )) # Pre-décrémente 'a', style C.
echo "a (after --a) = $a"
echo
(( t = a<45?7:11 )) # opérateur à trois opérandes, style C.
echo "If a < 45, then t = 7, else t = 11."
echo "t = $t " # Oui!
echo
# ------------------
# Alerte Easter Egg!
# ------------------
# Chet Ramey a apparemment laissé un ensemble de constructions C non
#+ documentées dans Bash (déjà adapté de ksh).
# Dans les documents Bash, Ramey appele ((...)) un shell arithmétique,
#+ mais cela va bien au-delà.
# Désolé, Chet, le secret est maintenant découvert.
# Voir aussi les boucles "for" et "while" utilisant la construction ((...)).
# Elles fonctionnent seulement avec Bash, version 2.04 ou ultérieure.
exit 0 |
Voir aussi Exemple 10-12.
| Précédent | Sommaire | Suivant |
| $RANDOM: générer un nombre aléatoire | Niveau supérieur | Boucles et branchements |