La commande linux set est une commande shell intégrée qui vous permet d'afficher ou de définir les variables de shell et d'environnement. Dans ce guide, nous couvrons la commande set et démontrons les différentes façons dont l'utilitaire de ligne de commande peut être utilisée.
Syntaxe de base
La commande set prend la syntaxe suivante:
$ Command-Options Arguments
Options de commande
Il existe un certain nombre d'options qui peuvent être utilisées avec la commande set. Explorons certains d'entre eux:
Valeurs de sortie
Voici les valeurs de sortie de shell associées à la commande set:
0: La commande a réussi.
Définir la commande sans aucune option
Sans aucun argument, la commande set répertorie toutes les variables de shell, y compris leurs valeurs.
$ set
Définir les paramètres de position avec la commande set
La commande linux set peut être utilisée pour attribuer des valeurs aux paramètres de position. Un paramètre positionnel est une variable dans un programme shell, et sa valeur est référencée comme $ n où n est un chiffre indiquant la position du paramètre.
La valeur à 1 $ est le premier paramètre de position après le nom du fichier ou de la commande. La valeur de 2 $ est le deuxième paramètre, et ainsi de suite.
Supposons que nous exécutons la commande illustrée ci-dessous:
$ Set Red Blue Green
Ici, le rouge correspond au paramètre positionnel 1 $, le bleu correspond au paramètre 2 $, et enfin, le vert correspond à 3 $.
Pour répertorier tous les paramètres de l'ordre de 1 $ 2 $ 3 $, exécutez la commande echo ci-dessous:
$ echo "$ *"
Pour répertorier le premier paramètre, exécutez:
$ echo 1 $
Pour répertorier le deuxième paramètre, exécutez:
$ echo 2 $
Et ainsi de suite.
Utilisez la commande SET pour unser tous les paramètres de position
Pour un non-défaut les paramètres de position, exécutez la commande SET avec des traits de traits doubles - comme indiqué.
$ set --
Encore une fois, si vous essayez d'énumérer les paramètres de position, vous obtiendrez une sortie vide, ce qui implique qu'ils ont été non mis.
Ignorer une variable non liée
Par défaut, un script shell surplombe une variable non définie. Dans le script myscript.sh ci-dessous, la variable $ foo n'est pas encore définie et donc, n'existe pas.
Lorsque le script est exécuté, il renvoie une ligne vide pour la ligne qui contient une variable inexistante et procède à l'exécution de la ligne suivante:
$ ./ myscript.shot
Cette anomalie n'est pas désirée et les développeurs voudraient être informés en cas de variables non définies. La directive set -u au début du script imprimera une erreur sur le shell si le script se déroule en une variable non définie.
Lorsque le script est à nouveau exécuté, l'erreur sur une variable non liée s'affiche.
Affichez une erreur si une commande est inexistante
Habituellement, si une commande entre une erreur et ne parvient pas à s'exécuter, le shell bash continuera à exécuter les commandes restantes. Prenez, par exemple, le script shell ci-dessous:
La commande foobar est inexistante et une erreur doit être affichée sur le shell bash lorsque le script est exécuté pour montrer que le script dans un problème. Cependant, cela ne se produit pas et le shell va exécuter la ligne suivante comme indiqué:
Comme l'exemple précédent, ce n'est pas une bonne pratique lors de l'écriture de scripts de coquille, en particulier pour la sécurité et le débogage. Idéalement, le script doit s'arrêter lorsqu'il rencontre une erreur. Pour résoudre ce scénario, définissez l'ensemble directif -e au début du script comme indiqué.
Lorsque vous essayez d'exécuter le script, vous entrerez dans l'erreur comme indiqué:
Afficher une erreur dans les commandes PIPED
L'ensemble directif -e ne fonctionne pas lorsqu'il s'agit de commandes. Considérez le script ci-dessous:
Lorsque vous exécutez le script, il renvoie une erreur mais continue d'exécuter la commande suivante:
Pour surmonter cet obstacle, passez la directive Set -EO Pipefail comme indiqué:
$ set -eo pipefail
Cette fois-ci, le script se termine et n'exécute pas la ligne suivante.
Définir les options de sport allexe et de notifier
Pour définir les options Allexport et informer, exécutez la commande:
$ set -o Allexport -O notification
Conclusion
Ce sont quelques exemples de la façon dont vous pouvez utiliser la commande set dans vos scripts shell. Comme observé, la commande SET peut être un outil pratique pour définir les paramètres de position et déboguer vos scripts shell.