linux:shell:structures_controle:test
Table des matières
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
