¿Cuáles son las variables especiales del shell del signo de dólar?
En Bash, parece haber varias variables que contienen valores especiales con significado consistente. Por ejemplo,
./myprogram &; echo $!
devolverá el PID del proceso en segundo plano myprogram
. Conozco otros, como $?
el que creo que es el TTY actual. ¿Hay otros?
Aceptado
$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 del shell actual (no del 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 (de entrada).$?
es el estado de salida de tubería en primer plano más reciente.$!
es el PID del comando en segundo plano 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. Aquí están 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. Busque en Google variables especiales de bash.
Para ayudar a comprender qué hacen $#
, $0
y $1
, ..., $n
utilizo este script:
#!/bin/bash
for ((i=0; i<=$#; i++)); do
echo "parameter $i --> ${!i}"
done
Ejecutarlo devuelve un resultado representativo:
$ ./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