我使用compgen
when $COMP_WORD
equals 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
可在Bash 参考手册(向下滚动到内置描述的小节file
下)。-A action
complete