Les commandes if
, while
, et until
testent le statut de la commande qu'ils ont en paramètre.
if commande then liste_commandes [elif commande then liste_commandes] ... [else liste_commandes] fi
if test -f $1 then cat $1 else echo "Le fichier \"$1\" n'existe pas" fi
test
est une commande qui renvoie une valeur vraie ou fausse (0
pour vrai, 1
pour fausse).
Elle a différentes options permettant de tester différentes conditions sur des fichiers, des valeurs (chaînes de caractères), etc.
Sa syntaxe est test expr
ou [ expr ]
(attention, il faut un espace après [
et avant ]
).
expr | signification |
---|---|
-r fichier |
vrai si le fichier existe et est accessible en lecture (r) |
-w fichier |
vrai si le fichier existe et est accessible en écriture (w) |
-x fichier |
vrai si le fichier existe et est exécutable (x) |
-f fichier |
vrai si le fichier existe et est un fichier "régulier" (file) |
-d fichier |
vrai si le fichier existe et est un répertoire (directory) |
-s fichier |
vrai si le fichier existe et a une taille non nulle (size) |
c1 = c2 |
vrai si les deux expressions sont égales (des chaînes, en sh) |
c1 != c2 |
vrai si les deux expressions sont différentes (des chaînes, en sh) |
c1 |
vrai si c1 n'est pas la chaîne nulle (vide) |
e1 -eq e2 |
vrai si les deux entiers e1 et e2 sont algébriquement égaux (equal) |
e1 -ne e2 |
vrai si les deux entiers e1 et e2 sont algébriquement différents (not equal) |
e1 -gt e2 |
vrai si l'entier e1 est plus grand que l'entier e2 (greater than) |
e1 -lt e2 |
vrai si l'entier e1 est plus petit que e2 (lower than) |
! expr |
négation de l'expression booléenne expr |
e1 -a e2 |
et logique entre les deux expressions booléennes e1 et e2 (and) |
e1 -o e2 |
ou logique entre les deux expressions booléennes e1 et e2 (or) |
Quand script.sh
est un fichier qui existe dans le répertoire courant.
$ test -f script.sh $ echo $? 0
Quand inexistant.sh
est un fichier qui n'est pas dans le répertoire courant.
$ test -f inexistant.sh $ echo $? 1