Question Quelles sont les variables shell spéciales du signe dollar?


Dans Bash, il semble y avoir plusieurs variables qui contiennent des valeurs spéciales, cohérentes. Par exemple,

./myprogram &; echo $!

retournera le PID du processus qui a été myprogram. Je connais d'autres, tels que $? ce que je pense est l'ATS actuel. Y en at-il d'autres?


627
2018-03-02 03:42


origine


Réponses:


  • $1, $2, $3, ... sont les paramètres de position.
  • "$@" est une construction de type tableau de tous les paramètres de position, {$1, $2, $3 ...}.
  • "$*" est l'expansion IFS de tous les paramètres de position, $1 $2 $3 ....
  • $# est le nombre de paramètres de position.
  • $- les options actuelles définies pour le shell.
  • $$ pid du shell actuel (pas sous-shell).
  • $_ paramètre le plus récent (ou le chemin abs de la commande pour démarrer le shell actuel immédiatement après le démarrage).
  • $IFS est le séparateur de champ (entrée).
  • $? est le plus récent statut de sortie de pipeline de premier plan.
  • $! est le PID de la commande d'arrière-plan la plus récente.
  • $0 est le nom du shell ou du script shell.

La plupart de ce qui précède peut être trouvé sous Paramètres spéciaux dans le manuel de référence de Bash. Il y a tous les variables d'environnement définies par le shell.

Pour un index complet, veuillez consulter le Manuel de référence Index variable.


1086
2018-03-02 04:04



  • $_ dernier argument de la dernière commande
  • $# nombre d'arguments passés au script en cours
  • $* / $@ liste des arguments passés au script sous forme de liste chaîne / délimitée

Du haut de ma tête. Google pour les variables spéciales bash.


43
2018-03-02 03:46



Pour aider à comprendre ce que faire $#, $0 et $1, ..., $n fais, j'utilise ce script:

#!/bin/bash

for ((i=0; i<=$#; i++)); do
  echo "parameter $i --> ${!i}"
done

L'exécuter renvoie une sortie représentative:

$ ./myparams.sh "hello" "how are you" "i am fine"
parameter 0 --> myparams.sh
parameter 1 --> hello
parameter 2 --> how are you
parameter 3 --> i am fine

8
2018-04-25 12:46



Prenez soin de certains exemples; $ 0 peut inclure un chemin menant ainsi que le nom du programme. Par exemple, sauvegardez ce script en deux lignes sous ./mytry.sh et exécutez-le.

#!/bin/bash

echo "parameter 0 --> $0" ; exit 0

Sortie:

parameter 0 --> ./mytry.sh

Ceci est sur une version actuelle (année 2016) de Bash, via Slackware 14.2


3
2017-09-14 10:19