Isso é bem interessante. O problema é que o escopo da função está substituindo o do script. Não consigo ver uma maneira simples de contornar isso.
No entanto, você pode simplesmente passar as variáveis como argumentos (para a função):
function_name () {
[[ $# == 3 ]] && echo
}
function_name $@
Ou você pode:
- Passe
$# $@
, verifiquee
echo
- Passe
$# $@
, verifique,
shift
e, em seguida,echo
- Armazene
$@
como uma variável no nível do script e acesse-a na função