Introduction à la programmation Bash
Alex Scriven
Data Scientist
Les nombres ne sont pas intégrés nativement au shell comme dans la plupart des REPL (console) tels que R et Python
Dans Python ou R, vous pouvez faire :
>>> 1 + 4
5
Cela retourne bien le résultat voulu !
Les nombres ne sont pas pris en charge nativement :
(Dans le terminal)
1 + 4
bash: 1: command not found
expr est un utilitaire pratique (comme cat ou grep)
Cela fonctionnera maintenant (dans le terminal) :
expr 1 + 4
5
Parfait !
expr ne gère pas nativement les décimales :
(Dans le terminal)
expr 1 + 2.5
expr: not a decimal number: '2.5'
Pas d'inquiétude ! (Il y a une solution)
bc (basic calculator) est un programme en ligne de commande utile.
Vous pouvez l'ouvrir dans le terminal et faire des calculs :

Utiliser bc sans ouvrir la calculatrice est possible avec un tuyau (pipe) :
echo "5 + 7.5" | bc
12.5
bc a aussi un paramètre scale pour le nombre de décimales.
echo "10 / 3" | bc
3
echo "scale=3; 10 / 3" | bc
Notez l'usage de ; pour séparer des « lignes » dans le terminal
3.333
On peut attribuer des variables numériques comme des chaînes :
dog_name='Roger' dog_age=6echo "My dog's name is $dog_name and he is $dog_age years old"
Attention : dog_age="6" fonctionne, mais c'est une chaîne !
My dog's name is Roger and he is 6 years old
Une variante de la notation à simple parenthèse pour variables numériques :
expr 5 + 7
echo $((5 + 7))
12
12
Attention : cette méthode utilise expr, pas bc (pas de décimales)
Vous souvenez-vous de l'appel au shell dans la leçon précédente ?
Très utile pour les variables numériques :
model1=87.65 model2=89.20echo "The total score is $(echo "$model1 + $model2" | bc)"echo "The average score is $(echo "($model1 + $model2) / 2" | bc)"
The total score is 176.85
The average score is 88
Introduction à la programmation Bash