Bash parámetros especiales¶
El shell trata varios parámetros de forma especial. Dichos parámetros sólo pueden ser referenciados, es decir, no se le pueden asignar valor.
- *
- Expande a los parámetros posicionales, comenzando por uno.
- Cuando ocurre la expansión dentro de doble comillado, expande a una única palabra con el valor de cada parámetro separado por el primer caracter de la variable especial IFS. Es decir, "$*" equivale a "$1c$2c...", donde c es el primer caracter del valor de la variable IFS.
- Si IFS no está definida, los parámetros son separados por espacios.
- Si IFS es null, los parámetros son agrupados sin separadores.
- @
- Expando a los parámetros posicionales, comenzando por uno.
- Cuando ocurre la expansión dentro de doble comillado, cada parámetro expande a una palabra separada. Es decir, "$@" equivale a "$1" "$2" ...
- Si la expansión de doble comillado ocurre dentro de una palabra, la expandión del primer parámetro es agrupado con el comienzo de la palabra original y la expansión de la última palabra es agrupada con la última parte de la palabra original.
- Cuando no hay parámetros posicionales, "$@" y $@ expanden a nada (i.e., son removidos).
- #
- Expande la cantidad de parámetros posicionales a un decimal.
- ?
- Expande al código de salida del "foreground pipeline" más recientemente ejecutado.
- -
- Expande a las banderas de opciones especificadas durante la invocación por el comando embutido set o aquellas puestas por el shell mismo (tal como la opción -i).
- $
- Expande al ID de proceso del shell. En un () subshell, expande al ID de proceso del shell, no del subshell.
- !
- Expande al ID de proceso del comando background (asíncrono) más recientemente ejecutado.
- 0
- Expande al nombre de shell o guión shell (script). Esto es puesto durante la inicialización shell.
- Si bash es invocado con un archivo de comando, $0 es puesto al nombre de dicho archivo.
- Si bash es iniciado con la opción -c, entonces $0 es puesto al primer argumento justo después de la cadena a ser ejecutada, si es que hay alguna presente. De cualqueir otra forma, es puesto al nombre de archivo utilizado para invocar bash, dado por el argumento cero.
- _
- Al arranque de shell, define la ruta absoluta utilizada para invocar el shell o guión shell en ejecución como se ha pasado al entorno o lista de argumentos.
- Subsiguiente, expande al último argumento del comando previo, después de expansión.
- También establece la ruta absoluta de archivo utilizada para invocar cada comando ejecutado y puesto en el entorno exportado a dicho comando.
- Cuando se verifica mail, este parámetro mantiene e lnombre del archivo mail que se está verificando.
Algunos ejemplos¶
[gomix@movix ~]$ echo "$-" himBH
[gomix@movix ~]$ echo "$0" /bin/bash
[gomix@movix ~]$ echo "$#" 0
[gomix@movix ~]$ ls xrandr xrandr [gomix@movix ~]$ echo "$?" 0 [gomix@movix ~]$ ls xrandra ls: no se puede acceder a xrandra: No existe el fichero o el directorio [gomix@movix ~]$ echo "$?" 2
[gomix@movix ~]$ echo "$$" 5734
[gomix@movix ~]$ echo "$_" /bin/bash