<Précédent | Table des matières | Suivant>
Arithmétique simple
Les opérateurs arithmétiques ordinaires sont répertoriés dans le tableau ci-dessous :
Tableau 34-3 : Opérateurs arithmétiques
Description de l'opérateur
Description de l'opérateur
+ Addition
- Soustraction
* Multiplier
/ Division entière
** Exponentiation
% Modulo (reste)
La plupart d'entre eux s'expliquent d'eux-mêmes, mais la division entière et modulo nécessitent une discussion plus approfondie.
Comme l'arithmétique du shell ne fonctionne que sur des nombres entiers, les résultats de la division sont toujours des nombres entiers :
[moi@linuxbox ~]$ écho $(( 5 / 2 ))
2
[moi@linuxbox ~]$ écho $(( 5 / 2 ))
2
Cela rend la détermination d'un reste dans une opération de division plus importante :
[moi@linuxbox ~]$ écho $(( 5 % 2 ))
1
[moi@linuxbox ~]$ écho $(( 5 % 2 ))
1
En utilisant les opérateurs de division et modulo, nous pouvons déterminer que 5 divisé par 2 donne 2, avec un reste de 1.
Le calcul du reste est utile dans les boucles. Il permet d'effectuer une opération à des intervalles spécifiés pendant l'exécution de la boucle. Dans l'exemple ci-dessous, nous affichons une ligne de nombres, mettant en évidence chaque multiple de 5 :
#! / Bin / bash
# modulo : démontre l'opérateur modulo pour ((i = 0; i <= 20; i = i + 1)); faire
reste=$((i % 5))
if (( reste == 0 )); puis printf "<%d> " $i
d'autre
printf "%d " $i
fi fait
printf "\ n"
#! / Bin / bash
# modulo : démontre l'opérateur modulo pour ((i = 0; i <= 20; i = i + 1)); faire
reste=$((i % 5))
if (( reste == 0 )); puis printf "<%d> " $i
d'autre
printf "%d " $i
fi fait
printf "\ n"
Une fois exécuté, les résultats ressemblent à ceci :
[moi@linuxbox ~]$ forme
<0> 1 2 3 4 <5> 6 7 8 9 <10> 11 12 13 14 <15> 16 17 18 19 <20>
[moi@linuxbox ~]$ forme
<0> 1 2 3 4 <5> 6 7 8 9 <10> 11 12 13 14 <15> 16 17 18 19 <20>