if

if [["$age" -gt 18 ]];thenecho"Adulte"elif [["$age" -eq 18 ]];thenecho"Pile 18"elseecho"Mineur"fi

Tests importants

TestSignification
-f filefichier existe
-d dirdossier existe
-z strchaîne vide
-n strchaîne non vide
str1 = str2égalité
int1 -eq int2égalité int

Toujours utiliser [[ ... ]] plutôt que [ ... ].

🧵 Comparaisons sur chaînes de caractères

ConditionSignificationExemple
[[ "$a" = "$b" ]]égalité[[ "$name" = "john" ]]
[[ "$a" != "$b" ]]différent
[[ -z "$a" ]]chaîne vide
[[ -n "$a" ]]chaîne non vide
[[ "$a" < "$b" ]]ordre alphabétique
[[ "$a" > "$b" ]]ordre alphabétique
[[ "$a" =~ regex ]]match regex[[ "$email" =~ @gmail\.com$ ]]

⚠️ < et > ne marchent **que dans ****[[ ]]**

🔢 Comparaisons sur entiers

ConditionSignificationExemple
-eqégal[[ "$a" -eq 5 ]]
-nedifférent
-lt<
-le
-gt>
-ge

🧠 Logique booléenne

OpérateurSignificationExemple
&&ET[[ -f f && -r f ]]
``
!NON[[ ! -f f ]]

📁 Tests sur fichiers / dossiers

ConditionSignification
-e fileexiste
-f filefichier normal
-d dirdossier
-L filelien symbolique
-r filelisible
-w filemodifiable
-x fileexécutable
-s filenon vide
file1 -nt file2plus récent
file1 -ot file2plus ancien