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

Resuelto Z Douglas asked hace 13 años • 4 respuestas

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?

Z Douglas avatar Mar 02 '11 10:03 Z Douglas
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).
  • $IFSes 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.
  • $0es 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 .

kojiro avatar Mar 02 '2011 04:03 kojiro
  • $_ú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.

Dan avatar Mar 02 '2011 03:03 Dan

Para ayudar a comprender qué hacen $#, $0y $1, ..., $nutilizo 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
fedorqui avatar Apr 25 '2016 12:04 fedorqui