
Dada una función bash:
function f1 {
echo "The function f1 is being called with ??? argument(s)."
}
y dos invocaciones:
f1 arg1
f1 arg1 arg2
¿Cómo puedo obtener la cantidad de argumentos aprobados? Salida deseada:
The function f1 is being called with 1 argument(s).
The function f1 is being called with 2 argument(s).
Respuesta1
Puedes usar
$#
ver man bash
para más consejos de bash
Respuesta2
Usando el argumento especial
$#
que devuelve el número de argumentos posicionales dados a esta invocación del shell.
De man bash
...
$1 - $9 estas variables son los parámetros posicionales.
$0 el nombre del comando que se está ejecutando actualmente.
$# el número de argumentos posicionales dados a esta invocación del shell.
$? el estado de salida del último comando ejecutado se proporciona como una cadena decimal. Cuando un comando se completa correctamente, devuelve el estado de salida de 0 (cero); de lo contrario, devuelve un estado de salida distinto de cero.
$$ el número de proceso de este shell: útil para incluirlo en nombres de archivos y hacerlos únicos.
$! la identificación del proceso del último comando ejecutado en segundo plano.
$: las opciones actuales proporcionadas para esta invocación del shell.
$* una cadena que contiene todos los argumentos del shell, comenzando en $1.
$@ igual que el anterior, excepto cuando se cita.
Estos argumentos especiales son muy útiles para recopilar datos sobre el shell actual.