| Expressions arithmétiques | Exemple | Résultat | |
|---|---|---|---|
| ! | négation logique, | (( !17 )) | 0 |
| ~ | négation bit à bit, | ((~0 )) | -1 |
| * | multiplication, | (( 2*3 )) | 6 |
| / | division, | (( 8/2 )) | 4 |
| % | modulo, (reste) | (( 16/7 )) | 2 |
| + | addition, | (( 5+2 )) | 7 |
| - | substraction | (( 5-2 )) | 3 |
| ou signe négatif | (( -5-2 )) | -7 | |
| << | décallage à gauche | (( 2<<4 )) | 32 |
| >> | décallage à droite | (( 32>>4 )) | 2 |
| & | et logique bit à bit | (( 2#101&2#110 )) | 4 (2#100) |
| | | ou logique bit à bit | (( 2#101|2#110 )) | 7 (2#111) |
| ^ | ou exclusif bit à bit | (( 2#101^2#110 )) | 3 (2#011) |
| && | et entre 2 expressions | cd $rep && x=0 || x=1 | Si le changement de répertoire a pu se faire x=0 sinon x=1 |
| || | ou entre 2 expressions | ||
| = | affectation | x=5 | x vaut 5 |
| op= | affectation composée
op est l'un des opérateurs ci-dessus |
x+=5 | x=x+5 |
| Opérateur de comparaison : | |||
| == | égal | != | différent (not egal) |
| <= | inférieur ou égal | >= | supérieur ou égal |
| > | strictement supérieur | < | strictement inférieur |
Exemple : Test du code retour d'une commande
rep=/travail
cd $rep
if (( $? ))
then echo "Le répertoire $rep n'a pas pu être atteint"
exit 1
fi
rm -f * # mieux vaut vérifier avant d'agir ! Non ?
a=1; b=a+1; c=b+1; d=c+1; e=d+1; f=e+1; g=f+1; h=g+1; i=h+1 echo "$h=$((h))" # g+1=8 : $h correspond à g+1 (non évalué) echo "$i=$((i))" # Erreur car 9 niveaux de récurrence.