Les tests dans Bash

Pourquoi faire des tests ?

Les tests permettent à un script de prendre des décisions selon une condition.

Exemple :

if [[ $age -ge 18 ]]; then
  echo "Tu es majeur."
else
  echo "Tu es mineur."
fi

Un test renvoie un code de retour :


Syntaxe générale

[[ condition ]]

C’est la forme moderne et recommandée pour écrire des tests dans Bash.

Avantages :


Tests sur les nombres

Opérateur Signification Exemple
-eq égal à [[ $x -eq 5 ]]
-ne différent de [[ $x -ne 5 ]]
-lt plus petit que [[ $x -lt 10 ]]
-le plus petit ou égal [[ $x -le 10 ]]
-gt plus grand que [[ $x -gt 3 ]]
-ge plus grand ou égal [[ $x -ge 3 ]]

Tests sur les nombres avec la syntaxe arithmétique

Expression Signification Exemple équivalent
(( a == b )) a égal à b [[ $a -eq $b ]]
(( a != b )) a différent de b [[ $a -ne $b ]]
(( a < b )) a plus petit que b [[ $a -lt $b ]]
(( a <= b )) a plus petit ou égal à b [[ $a -le $b ]]
(( a > b )) a plus grand que b [[ $a -gt $b ]]
(( a >= b )) a plus grand ou égal à b [[ $a -ge $b ]]

Tests sur les chaînes de caractères

Test Signification Exemple
-z "$var" chaîne vide [[ -z "$nom" ]]
-n "$var" chaîne non vide [[ -n "$nom" ]]
"$a" == "$b" chaînes identiques [[ "$a" == "$b" ]]
"$a" != "$b" chaînes différentes [[ "$a" != "$b" ]]

Tests sur les fichiers et dossiers

Test Signification Exemple
-e fichier existe [[ -e "$f" ]]
-f fichier fichier régulier [[ -f "$f" ]]
-d dossier dossier [[ -d "$rep" ]]
-r fichier lisible [[ -r "$f" ]]
-w fichier modifiable [[ -w "$f" ]]
-x fichier exécutable [[ -x "$f" ]]

Combiner plusieurs conditions

Symbole Signification Exemple
&& ET logique [[ $x -gt 0 && $x -lt 10 ]]
|| OU logique [[ $x -lt 0 || $x -gt 10 ]]
! NON logique [[ ! -e "$f" ]]

Résumé


Exemple pratique

!#/bin/bash
read -p "Nombre : " n
if [[ -z "$n" ]]; then
  echo "Aucune valeur"
elif [[ $n -gt 0 ]]; then
  echo "Positif"
elif [[ $n -lt 0 ]]; then
  echo "Négatif"
else
  echo "Zéro"
fi