Restaurar conclusão padrão

3

Eu uso compgen quando $COMP_WORD é igual a 1, agora desejo restaurar a conclusão padrão quando, de outra forma,

Agora eu tenho,

_rr()
{
    case $COMP_CWORD in
        1)
            COMPREPLY=($(compgen -W "A B" "${COMP_WORDS[$COMP_CWORD]}"))
            ;;
    esac
}

complete -F _rr rr

Agora, quando $COMP_CWORD não é 1, não tenho conclusão para arquivos / diretórios, essa é a conclusão padrão que eu precisava.

Além disso, preciso ativar a conclusão apenas quando ${COMP_WORDS[$COMP_CWORD - 1]} for A nesse caso mínimo.

    
por daisy 31.01.2013 / 01:16

1 resposta

3

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

    
por 09.02.2013 / 20:17