¿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 bashdice:
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
mancasi cualquier cosa, incluso a mansí mismo. Prueba también aproposalgo de tiempo.
infopara 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 ( settambién funcionaría allí).
Esto se explica en la página de manual de bash en el bloque "Parámetros especiales".