¿Cómo puedo saber la cantidad de argumentos que realmente se pasan a una función bash?

¿Cómo puedo saber la cantidad de argumentos que realmente se pasan a una función bash?

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 bashpara 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.

información relacionada