Variables numériques en Bash

Introduction au scripting 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 (consoles) tels que R et Python

En Python ou R, vous pouvez faire :

>>> 1 + 4
5

Cela renverra le résultat attendu !

Introduction au scripting 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 au scripting Bash

Présentation de expr

 

expr est un utilitaire pratique (comme cat ou grep)

Cela fonctionne désormais (dans le terminal) :

expr 1 + 4
5

Parfait !

Introduction au scripting 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 existe une solution)

Introduction au scripting 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 au scripting Bash

Envoyer des nombres à bc

 

Utiliser bc sans ouvrir la calculatrice est possible via un pipe :

echo "5 + 7.5" | bc
12.5
Introduction au scripting Bash

Argument scale de bc

bc propose aussi l'argument 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 les « lignes » dans le terminal

3.333
Introduction au scripting Bash

Les nombres dans les scripts Bash

On peut assigner 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 en fait une chaîne !

My dog's name is Roger and he is 6 years old
Introduction au scripting Bash

Notation à double parenthèse

Une variante de la notation à simple parenthèse pour les variables numériques :

expr 5 + 7
echo $((5 + 7))
12
12

Attention : cette méthode utilise expr, pas bc (pas de décimales)

Introduction au scripting Bash

Un shell dans le shell, suite

Vous souvenez-vous de l'appel au shell vu 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 au scripting Bash

Passons à la pratique !

Introduction au scripting Bash

Preparing Video For Download...