Les tests en Bash shell permettent de faire des vérifications logiques ou arithmétiques (fichiers, chaînes, entiers, etc.). Voici un résumé des différents types de tests que tu peux effectuer avec la commande test, ou sa forme équivalente entre crochets [ ... ].

if [ CONDITION ]; then
    # commandes si vrai
else
    # commandes si faux
fi

Important : toujours laisser des espaces autour des crochets [ et ].

Types de tests

Tests de fichiers

TestSignification
[ -e fichier ]Le fichier existe (quelque soit son type)
[ -f fichier ]Le fichier est un fichier ordinaire
[ -d dossier ]C’est un dossier
[ -r fichier ]Le fichier est lisible
[ -w fichier ]Le fichier est modifiable
[ -x fichier ]Le fichier est exécutable

Tests de chaînes de caractères

TestSignification
[ "$str1" = "$str2" ]Les chaînes sont égales
[ "$str1" != "$str2" ]Les chaînes sont différentes
[ -z "$str" ]La chaîne est vide
[ -n "$str" ]La chaîne n’est pas vide

Tests numériques

TestSignification
[ "$a" -eq "$b" ]$a est égal à $b
[ "$a" -ne "$b" ]$a est différent de $b
[ "$a" -lt "$b" ]$a est inférieur à $b
[ "$a" -le "$b" ]$a est inférieur ou égal à $b
[ "$a" -gt "$b" ]$a est supérieur à $b
[ "$a" -ge "$b" ]$a est supérieur ou égal à $b

Combinaisons logiques

ET logique : &&

if [ $a -gt 0 ] && [ $a -lt 10 ]; then
echo "Entre 1 et 9"
fi

OU logique : ||

if [ $a -lt 0 ] || [ $a -gt 100 ]; then
echo "Hors de l'intervalle"
fi

Négation : !

if [ ! -f fichier.txt ]; then
echo "Fichier absent"
fi

🔸 Exemple complet

#!/bin/bash

fichier="mon_script.sh"

if [ -e "$fichier" ]; then
echo "Le fichier existe."

if [ -x "$fichier" ]; then
echo "Le fichier est exécutable."
else
echo "Le fichier n'est pas exécutable."
fi
else
echo "Le fichier n'existe pas."
fi