bash environment-variables dollar-sign

bash - ¿Cuáles son las variables especiales de shell de signo de dólar?



environment-variables dollar-sign (4)

Para ayudar a entender qué hacen $# , $0 y $1 , ..., $n , uso este script:

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

Ejecutarlo devuelve una salida representativa:

$ ./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

En Bash, parece que hay varias variables que contienen valores especiales, de significado consistente. Por ejemplo,

./myprogram &; echo $!

devolverá el PID del proceso que myprogram segundo plano myprogram . Sé de otros, como $? que creo que es el actual TTY. ¿Hay otros?


Tenga cuidado con algunos de los ejemplos; $ 0 puede incluir una ruta principal, así como el nombre del programa. Por ejemplo, guarde este script de dos líneas como ./mytry.sh y luego ejecútelo.

#!/bin/bash echo "parameter 0 --> $0" ; exit 0

Salida:

parameter 0 --> ./mytry.sh

Esto está en una versión actual (año 2016) de Bash, a través de Slackware 14.2


  • $1 , $2 , $3 , ... son los parámetros posicionales .
  • "$@" es una construcción similar a una matriz de todos los parámetros posicionales, {$1, $2, $3 ...} .
  • "$*" es la expansión IFS de todos los parámetros posicionales, $1 $2 $3 ...
  • $# es el número de parámetros posicionales.
  • $- opciones actuales establecidas para el shell.
  • $$ pid de la shell actual (no subshell).
  • $_ parámetro más reciente (o la ruta abs del comando para iniciar el shell actual inmediatamente después del inicio).
  • $IFS es el separador de campo (entrada).
  • $? es el estado de salida de tubería de primer plano más reciente.
  • $! es el PID del comando de fondo más reciente.
  • $0 es el nombre del shell o script de shell.

La mayoría de los anteriores se pueden encontrar en Parámetros especiales en el Manual de referencia de Bash. Hay todas las variables de entorno establecidas por el shell .

Para obtener un índice completo, consulte el Índice de variables del manual de referencia .


  • $_ último argumento del último comando
  • $# número de argumentos pasados ​​al script actual
  • $* / $@ lista de argumentos pasados ​​al script como cadena / lista delimitada

la parte superior de mi cabeza. Google para bash variables especiales.