Bash : Les opérateurs de test sur les paramètres
Objet : Suite de la série de wiki visant à maîtriser bash via les caractères.
-
Commentaires : Bash, ligne de commande et scripts
-
-
Création par
agp91 20/02/2023
Testé par <…> le <…>
-
-
-
Les opérateurs de test sur paramètres
-
-
-
-
-
-
-
Nota :
Contributeurs, les sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
Introduction
Dans la page du manuel de bash, les opérateurs des commandes de test sont nommées primitives.
Bash dispose de plusieurs commandes pour réaliser des tests sur des paramètres.
Les commandes [ et test sont équivalentes.
Les commandes [ et test sont disponibles dans leurs versions externe : /usr/bin/[ et /usr/bin/test.
Les commandes internes disposent de primitive que n'ont pas les commandes externes.
Rappels :
Une commande de test renvoie le code de retour 0 (considérer comme vrai) lorsque le test réussi et 1 (considérer comme faux) lorsqu'il échoue.
Le code retour d'une commande est mémorisé dans le paramètre spécial $?.
L'opérateur de contrôle && exécute la commande suivante, si la commande précédente à renvoyée un code de retour égale à 0.
L'opérateur de contrôle || exécute la commande suivante, si la commande précédente à renvoyée un code de retour supérieur à 0.
Les commandes de test disposent de deux primitives unaires pour tester les paramètres.
Synopsis
test OP nom_paramètre
[ OP nom_paramètre ]
[[ OP nom_paramètre ]]
Liste des primitives de test sur les paramètres |
Primitives | Retours |
-v | Vrai si le paramètre existe. |
-R | Vrai si le paramètre est une référence de nom. |
Exemples
Testons si la variable var existe.
var="Debian Facile" # var existe et n'est pas une chaîne vide.
[ -v var ] ; echo $?
var= # var existe et est une chaîne vide.
test -v var ; echo $?
unset var # Destruction de var (var n’existe plus).
[[ -v var ]] ; echo $?
0
0
1
Une référence de nom est un paramètre qui mémorise le nom d'un autre paramètre.
Il est nécessaire d'utiliser la commande declare -n pour construire une référence de nom.
Testons si la variable v est une référence de nom.
var="Debian GNU Linux"
declare -n v=var
echo var=$var
echo v=$v
v="Debian Facile"
echo var=$var
[ -R var ] ; echo $?
[[ -R v ]] ; echo $?
declare -p var v
unset var v
var=Debian GNU Linux
v=Debian GNU Linux
var=Debian Facile
1
0
declare -- var="Debian Facile"
declare -n v="var"
Tuto précédent
La suite c'est ici