Outils pour utilisateurs

Outils du site


linux:shell:structures_controle:test

Linux

Les contrôles booléens


La commande 'test'

La commande test est une commande. À ce titre, test renvoie donc un statut vrai ou faux. Mais cette commande n'affiche rien à l'écran. Il faut donc, pour connaître le résultat d'un test, vérifier le contenu de la variable $?.

  • Test sur les fichiers
test option "fichier"
Option Signification
-s fichier “non vide”
-f fichier “ordinaire”
-d fichier “répertoire”
-b fichier “spécial” mode “bloc”
-c fichier “spécial” mode “caractère”
-p fichier “tube”
-L fichier “lien symbolique”
-h fichier “lien symbolique” (identique à « -L »)
-r fichier a le droit en lecture
-w fichier a le droit en écriture
-x fichier a le droit en exécution
-u fichier a le “setuid”
-g fichier a le “setgid”
-k fichier a le “sticky bit”
-t [n] fichier n°[n] est associé à un terminal (par défaut, [n] vaut 1)
Réservé au Ksh / Bash
-S fichier “socket”
-e fichier existe quel que soit son type
-O fichier m'appartient
-G fichier appartient à mon groupe
-N fichier modifié depuis sa dernière lecture


  • Test sur les chaînes de caractères
test "fichier1" option "fichier2"
Option Signification
-z chaîne de longueur nulle
-n chaîne de longueur non nulle
= chaîne1 identique à chaîne2
!= chaîne1 différente de chaîne2

Exemples :

$ var="1A" 
$ [[ $var =~ ^[0-9]*$ ]]            #renvoie faux
$ [[ $var =~ ^[0-9] ]]              #renvoie vrai
$ [[ $var =~ [A-Z]{1} ]]            #renvoie vrai
$ [[ $var =~ ^[0-1]{1}[A-Z]{1}$ ]]  #renvoie vrai

  • Test sur les valeurs numériques
test nb1 option nb2
Option Signification
-eq nb1 égal à nb2 (equal)
-ne nb1 différent de nb2 (non equal)
-lt nb1 inférieur à nb2 (less than)
-le nb1 inférieur ou égal à nb2 (less or equal)
-gt nb1 supérieur à nb2 (greater than)
-ge nb1 supérieur ou égal à nb2 (greater or equal)

Exemples :

$ test "5" = "05"     #Renvoie "faux" (ce qui est mathématiquement incorrect) 
$ test "5" -eq "05"   #Renvoie "vrai" (correct)

  • Connecteurs logiques

Les connecteurs permettent de composer des expressions plus complexes.

Option Signification
-a “ET” logique
-o “OU” logique
! “NOT” logique
(…) Groupement d'expressions
(doit être protégé de backslashes pour ne pas que le shell l'interprète comme une demande de création de sous-shell)

Exemple : Vérifie si l'année courante est bissextile (divisible par 4, mais pas par 100 ; ou divisible par 400)

$ y=`date '+%Y'`                # Récupère l'année courante dans la variable "y" 
$ test \( `expr $y % 4` -eq 0 ?a `expr $y % 100` -ne 0 \) ?o `expr $y % 400` -eq 0

Les commandes 'true' et 'false'

Les commandes true et false n'ont d'autre but que de renvoyer un état respectivement à “vrai” ou “faux”.

Exemples :

$ true      # La commande renvoie la valeur "vrai" 
$ echo $? 
0 
$ false     # La commande renvoie la valeur "faux" 
$ echo $? 
1

linux/shell/structures_controle/test.txt · Dernière modification : 2022/07/12 16:00 de zandor