====== 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. * Niveau requis : {{tag>débutant}} * Commentaires : Bash, ligne de commande et scripts * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) * Suivi : {{tag>en-chantier à-tester à-placer}} * Création par [[user>agp91]] 20/02/2023 * Testé par <...> le <...> FIXME * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=393483#p393483 | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) * [[doc:programmation:shells:bash-les-differents-caracteres-speciaux|Vision d'ensemble]] * [[doc:programmation:shells:la-page-man-bash-les-caracteres-speciaux|Détail et caractères]] * **Les opérateurs de test sur paramètres** ;-) * [[doc:programmation:shells:la-page-man-bash-ii-les-operateurs-lexicographiques|Les opérateurs de test sur chaînes]] * [[atelier:chantier:bash:les-operateurs-de-test-sur-fichiers|Les opérateurs de test sur fichiers]] * [[doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs de comparaison numérique]] * [[doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques|Les symboles dans les calculs]] * [[doc:programmation:shells:page-man-bash-v-les-tableaux|Bash : les tableaux]] * [[doc:programmation:shells:man-bash-vi-les-caracteres-de-transformation-de-parametres|Les caractères de transformation de parametres]] * [[doc:programmation:shells:bash-vii-globs-etendus-regex|Bash : Variables, globs étendus, ERb, ERe]] **Nota :** Contributeurs, les FIXME 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 internes **[** et **test**. * Et la commande composée **[[**. * Les commandes **[** et **test** sont équivalentes. * Les commandes **[** et **test** sont disponibles dans leurs versions externe : **/usr/bin/[** et **/usr/bin/test**. * Elles ont toutes les deux la même page de manuel (**man [** ou **man 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 ]]** * Avec : * **Nom_paramètre** est sujet au développement des paramètres. * **OP**, l'un des opérateur du tableau suivant. | 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 ===== [[doc:programmation:shells:la-page-man-bash-les-caracteres-speciaux|Détail et caractères]] ===== La suite c'est ici ===== [[doc:programmation:shells:la-page-man-bash-ii-les-operateurs-lexicographiques|Les opérateurs de test sur chaînes]]