GNU/Linux >> Tutoriels Linux >  >> Linux

Quels sont les paramètres/variables spéciaux du shell (bash) ?

J'ai trouvé un paramètre spécial avec Bash commençant par $ signe. Exemple :Lorsque je cherchais le statut de sortie, je connaissais $? , ID de processus par $$ etc.

Alors, je partage cet article pour savoir quels sont les paramètres bash (shell) spéciaux et leur utilisation.

Réponse acceptée :

Se référant à 3.4.2 Paramètres spéciaux du manuel de référence de Bash.

Paramètres spéciaux :

  • $*

($*) Développe les paramètres de position, à partir de un. Lorsque le développement n'est pas entre guillemets doubles, chaque paramètre positionnel se développe en un mot séparé. Dans les contextes où il est exécuté, ces mots sont sujets à une division supplémentaire des mots et à l'expansion des noms de chemin. Lorsque le développement se produit entre guillemets doubles, il se développe en un seul mot avec la valeur de chaque paramètre séparée par le premier caractère de la variable spéciale IFS. Autrement dit, « $* » équivaut à « $1c$2c… », où c est le premier caractère de la valeur de la variable IFS. Si IFS n'est pas défini, les paramètres sont séparés par des espaces. Si IFS est nul, les paramètres sont joints sans séparateurs intermédiaires.

  • [e-mail protégé]

([email protected]) Développe les paramètres de position, en commençant par un. Lorsque le développement se produit entre guillemets doubles, chaque paramètre se développe en un mot séparé. Autrement dit, "[email protected]" équivaut à "$1" "$2"…. Si l'expansion entre guillemets doubles se produit dans un mot, l'expansion du premier paramètre est jointe à la partie de début du mot d'origine, et l'expansion du dernier paramètre est jointe à la dernière partie du mot d'origine. Lorsqu'il n'y a pas de paramètres de position, "[email protected]" et [email protected] deviennent vides (c'est-à-dire qu'ils sont supprimés).

  • $#

($#) Développe le nombre de paramètres positionnels en décimal.

  • $ ?

($?) S'étend jusqu'au statut de sortie du pipeline de premier plan le plus récemment exécuté.

  • $-

($-, un trait d'union.) Développe les indicateurs d'option actuels tels que spécifiés lors de l'invocation, par la commande intégrée set, ou ceux définis par le shell lui-même (comme l'option -i).

  • $$

($$) Développe l'ID de processus du shell. Dans un sous-shell (), il s'étend à l'ID de processus du shell appelant, pas au sous-shell.

  • € !

($!) Développe l'ID de processus de la tâche la plus récemment placée en arrière-plan, qu'elle soit exécutée en tant que commande asynchrone ou à l'aide de la fonction intégrée bg (voir Fonctions intégrées de contrôle des tâches).

  • 0 $

($0) Développe le nom du shell ou du script shell. Ceci est défini à l'initialisation du shell. Si Bash est invoqué avec un fichier de commandes (voir Scripts Shell), $0 est défini sur le nom de ce fichier. Si Bash est démarré avec l'option -c (voir Invoquer Bash), alors $0 est défini sur le premier argument après la chaîne à exécuter, s'il y en a une. Sinon, il est défini sur le nom de fichier utilisé pour invoquer Bash, comme indiqué par l'argument zéro.

Cela peut également être imprimé à partir de la page de manuel de bash :

$ man bash | awk '/Special Parameters$/','/Shell Variables$/'

Les paramètres ci-dessus sont les mêmes que les paramètres spéciaux définis POSIX.

Connexe :Que fait « set -f » dans Korn Shell ?

De plus, il y a les paramètres positionnels $1 , $2 , … qui contiennent les arguments de la ligne de commande du shell ou de la fonction courante (3.4.1 Paramètres positionnels). Ils sont également une fonctionnalité POSIX.

Les anciennes versions de Bash mentionnaient également $_ en tant que paramètre spécial, mais il est maintenant répertorié parmi les autres variables définies par le shell (5.2 Variables Bash). $_ n'est pas POSIX et d'autres shells peuvent ne pas le prendre en charge.

  • $_

($_ , un trait de soulignement.) Au démarrage du shell, définissez le chemin d'accès absolu utilisé pour invoquer le shell ou le script shell en cours d'exécution tel qu'il est passé dans l'environnement ou la liste d'arguments. Par la suite, développe jusqu'au dernier argument de la commande précédente, après développement. Également défini sur le chemin d'accès complet utilisé pour appeler chaque commande exécutée et placée dans l'environnement exporté vers cette commande. Lors de la vérification du courrier, ce paramètre contient le nom du fichier courrier.


Linux
  1. Existe-t-il des conventions de nommage pour les variables dans les scripts shell ?

  2. Différence entre les variables Shell qui sont exportées et celles qui ne sont pas dans Bash ?

  3. Fonctions dans les variables shell ?

  4. Partage de variables sur plusieurs scripts shell ?

  5. Comment obtenir le Tty dans lequel Bash est en cours d'exécution ?

Que sont les séparateurs de mots Readline ?

Les variables non environnementales transmises au sous-shell sont-elles invoquées par la substitution de commande ?

Comprendre la signification de `$_` ?

Quels sont les différents types de shells sous Linux ?

Paramètres spéciaux de Bash expliqués avec 4 exemples de scripts Shell

Comprendre les variables dans Bash Shell sous Linux