Variables numériques dans Bash

Introduction à la programmation Bash

Alex Scriven

Data Scientist

Les nombres dans d'autres langages

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 !

Introduction à la programmation Bash

Les nombres dans le shell

 

Les nombres ne sont pas pris en charge nativement :

(Dans le terminal)

1 + 4
bash: 1: command not found
Introduction à la programmation Bash

Présentation de expr

 

expr est un utilitaire pratique (comme cat ou grep)

Cela fonctionnera maintenant (dans le terminal) :

expr 1 + 4
5

Parfait !

Introduction à la programmation Bash

Limites de expr

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)

Introduction à la programmation Bash

Présentation de bc

bc (basic calculator) est un programme en ligne de commande utile.

Vous pouvez l'ouvrir dans le terminal et faire des calculs :

Utiliser le programme BC dans le shell

Introduction à la programmation Bash

Envoyer des nombres à bc

 

Utiliser bc sans ouvrir la calculatrice est possible avec un tuyau (pipe) :

echo "5 + 7.5" | bc
12.5
Introduction à la programmation Bash

Paramètre scale de bc

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
Introduction à la programmation Bash

Les nombres dans les scripts Bash

On peut attribuer des variables numériques comme des chaînes :

dog_name='Roger'
dog_age=6

echo "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
Introduction à la programmation Bash

Notation à double parenthèse

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)

Introduction à la programmation Bash

Un shell dans le shell, encore

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.20

echo "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

Passons à la pratique !

Introduction à la programmation Bash

Preparing Video For Download...