¿Qué $#
significa en shell?
Tengo un código como
if [ $# -eq 0 ]
then
Quiero entender qué $#
significa, pero la búsqueda de Google es muy mala para buscar este tipo de cosas.
¿Qué $#
significa en shell?
Tengo un código como
if [ $# -eq 0 ]
then
Quiero entender qué $#
significa, pero la búsqueda de Google es muy mala para buscar este tipo de cosas.
Respuestas:
Siempre puede consultar la página de manual de su shell. man bash
dice:
Special Parameters
# Expands to the number of positional parameters in decimal.
Por lo tanto, un script de shell puede verificar cuántos parámetros se dan con un código como este:
if [ "$#" -eq 0 ]; then
echo "you did not pass any parameter"
fi
man
casi cualquier cosa, incluso a man
sí mismo. Prueba también apropos
algo de tiempo.
info
para la página de manual o información adicional (muy detallada y compartimentada) si los paquetes tienen algo
Actualmente,
`$` refer to `value of` and
`#` refer to `number of / total number`
Asi juntos
`$#` refer to `The value of the total number of command line arguments passed.`
Por lo tanto, puede usar $#
para verificar la cantidad de argumentos / parámetros pasados como lo hizo y manejar cualquier situación inesperada.
Del mismo modo, tenemos
`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`
etc.
Es decir
El número de parámetros con los que se ha llamado al script
el número de parámetros que se han establecido en el script por set -- foo bar
(cuando se usa dentro de una función) el número de parámetros con los que se ha llamado a una función ( set
también funcionaría allí).
Esto se explica en la página de manual de bash en el bloque "Parámetros especiales".