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 bash
para 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.