나는 compgen
when $COMP_WORD
= 1을 사용했고 이제 그렇지 않으면 기본 완성을 복원하고 싶습니다.
지금 나 한테있어,
_rr()
{
case $COMP_CWORD in
1)
COMPREPLY=($(compgen -W "A B" "${COMP_WORDS[$COMP_CWORD]}"))
;;
esac
}
complete -F _rr rr
이제 $COMP_CWORD
1이 아닌 경우 필요한 기본 완성인 파일/디렉터리에 대한 완성을 얻지 못합니다.
또한 이 최소한의 경우 에만 ${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 action
complete