En Bash, parece haber varias variables que contienen valores especiales de significado constante. Por ejemplo,
./myprogram &; echo $!
devolverá el PID del proceso que se encuentra en segundo plano myprogram
. Sé de otros, como el $?
que creo que es el TTY actual. ¿Hay otros?
bash
environment-variables
dollar-sign
Z Douglas
fuente
fuente
$'\n'
es un carácter literal de nueva línea que resulta de reemplazar el dígrafo\n
con ASCII 10.${1}
,${*}
, etc, los tirantes son sólo para la desambiguación, ya menudo redundante. En forma aislada,${x}
es exactamente equivalente a$x
.$!
significa Soy consciente!$
pero no eso.Respuestas:
$1
`$2
`$3
, ... son los parámetros posicionales ."$@"
es una construcción de matriz-como 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 del 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 canalización en 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 parte de lo anterior se puede encontrar en Parámetros especiales en el Manual de referencia de Bash. Existen todas las variables de entorno establecidas por el shell .
Para obtener un índice completo, consulte el Índice de variables del manual de referencia .
fuente
bash
página del manual. La única rareza es que$_
solo se menciona en el contexto de su uso en laMAILPATH
variable.man(1) bash
virtud de parámetros especiales para el resto de la definición de$_
.!$
lugar de$_
en scripts bash, porque este último a veces falla.!$
y$_
.$_
último argumento del último comando$#
cantidad de argumentos pasados al script actual$*
/$@
lista de argumentos pasados al script como cadena / lista delimitadala parte superior de mi cabeza. Google para bash variables especiales.
fuente
$@
es la cadena y$*
es la lista delimitada (de todos modos, de acuerdo con la respuesta aceptada anteriormente)."$@"
expande a una lista, se"$*"
expande a una sola cadena. El comportamiento especial de se$@
aplica cuando está entre comillas dobles.Para ayudar a entender lo que no
$#
,$0
y$1
, ...,$n
sí, yo uso este script:Ejecutarlo devuelve una salida representativa:
fuente
Tenga cuidado con algunos de los ejemplos; $ 0 puede incluir alguna ruta principal, así como el nombre del programa. Por ejemplo, guarde este script de dos líneas como ./mytry.sh y ejecútelo.
Salida:
Esto está en una versión actual (año 2016) de Bash, a través de Slackware 14.2
fuente