기본값 복원 완료

기본값 복원 완료

나는 compgenwhen $COMP_WORD= 1을 사용했고 이제 그렇지 않으면 기본 완성을 복원하고 싶습니다.

지금 나 한테있어,

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

complete -F _rr rr

이제 $COMP_CWORD1이 아닌 경우 필요한 기본 완성인 파일/디렉터리에 대한 완성을 얻지 못합니다.

또한 이 최소한의 경우 에만 ${COMP_WORDS[$COMP_CWORD - 1]}완료를 활성화 하면 됩니다.A

답변1

실제 상황에서는 다른 작업도 수행하고 싶다고 가정하므로 계속해서 case생성자를 사용하세요(이 최소한의 경우에는 if생성자로 충분하지만).

_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

-f이 옵션에 대한 문서는 compgen다음에서 확인할 수 있습니다.배쉬 참조 매뉴얼(내장된 설명을 보려면 하위 섹션 아래로 스크롤하세요 file).-A actioncomplete

관련 정보