Como posso descobrir o número de argumentos que são realmente passados ​​para uma função bash?

Como posso descobrir o número de argumentos que são realmente passados ​​para uma função bash?

Dada uma função bash:

function f1 {
  echo "The function f1 is being called with ??? argument(s)."
  }

e duas invocações:

f1 arg1
f1 arg1 arg2

Como posso obter o número de argumentos aprovados? Saída desejada:

The function f1 is being called with 1 argument(s).    
The function f1 is being called with 2 argument(s).

Responder1

Você pode usar

$#

veja man bashpara mais dicas de bash

Responder2

Usando o argumento especial

$#

que retorna o número de argumentos posicionais dados a esta invocação do shell.

De man bash...

$1 - $9 essas variáveis ​​são os parâmetros posicionais.

$0 o nome do comando que está sendo executado atualmente.

$# o número de argumentos posicionais dados a esta invocação do shell.

$? o status de saída do último comando executado é fornecido como uma string decimal. Quando um comando é concluído com êxito, ele retorna o status de saída 0 (zero), caso contrário, retorna um status de saída diferente de zero.

$$ o número do processo deste shell - útil para incluir em nomes de arquivos, para torná-los únicos.

$! o ID do processo do último comando executado em segundo plano.

$- as opções atuais fornecidas para esta invocação do shell.

$* uma string contendo todos os argumentos do shell, começando em $1.

$@ igual ao acima, exceto quando citado.

Esses argumentos especiais são muito úteis para coletar dados sobre o shell atual.

informação relacionada