La commande linux set

La commande linux set

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:

  • -un: L'option -a définit toutes les variables ou fonctions créées ou modifiées pour l'exportation.
  • -B: L'option -b alerte immédiatement l'utilisateur lorsque les travaux d'arrière-plan sont résiliés.
  • -E: L'option -E demande à un shell de quitter si une commande crée un statut de sortie non nul. Autrement dit, le shell sort lorsque la commande échoue.
  • -F: L'option -f désactive la génération de noms de fichiers.
  • -H: L'option -H est activée par défaut. Il localise puis se souvient d'une fonction telle qu'elle attend l'exécution.
  • -N: L'option -n ne lit que les commandes mais ne parvient pas à les exécuter.
  • -T: L'option -t sort lors de la lecture et de l'exécution d'une commande.
  • -u: L'option -u traite les variables non définies ou non définies, sauf pour des paramètres spéciaux tels que les wildcards (*) ou «@» comme erreurs pendant l'expansion des paramètres.
  • -V: L'option -v imprime les lignes de l'entrée du shell lors de la lecture.
  • -X: L'option -x imprime les arguments de commande pendant l'exécution

Valeurs de sortie

Voici les valeurs de sortie de shell associées à la commande set:

0: La commande a réussi.

  1. La commande a échoué en raison d'un argument de commandement incorrect
  2. Échec du commandement en raison d'un argument attendu qui manque

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.