Assumirei que no seu caso do mundo real você também quer fazer outras coisas, e assim continuar a usar as construções case
(embora neste caso mínimo, if
construções teriam sido suficientes):
_rr()
{
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD - 1]}"
case "${COMP_CWORD}" in
1)
COMPREPLY=($(compgen -W "A B" "${cur}"))
;;
esac
case "${prev}" in
A)
COMPREPLY=($(compgen -f "${cur}"))
;;
esac
}
complete -F _rr rr
A documentação da opção -f
para compgen
está disponível no Manual de Referência do Bash (role para baixo até file
, sob a subseção -A action
da descrição do complete
construído).