만들려고 노력 중이야배쉬 자동완성내가 겪고 있는 문제를 보여주기 위해 이 코드를 작성하고 작업했습니다.
$ cat completion.sh
function _completion_command() {
compopt +o bashdefault +o default +o dirnames +o filenames +o nospace +o plusdirs
local cur=${COMP_WORDS[COMP_CWORD]}
local prev=${COMP_WORDS[COMP_CWORD-1]}
case "$prev" in
-u)
compopt -o nospace
COMPREPLY=($(compgen -S\= -W "parm" -- $cur))
return 0
;;
parm)
COMPREPLY=($(compgen -W "a b c" -- $cur))
return 0
;;
esac
COMPREPLY=($(compgen -W "-u" -- $cur))
return 0
}
complete -F _completion_command command
"parm"이라는 매개변수에 대해 가능한 매개변수를 제공하기 위해 완료가 필요했습니다.
. completion.sh
./command -u parm=
Tab Tab
a b c
하지만 제 경우에는 자동완성 기능이 아무런 도움이 되지 않았습니다.
답변1
prev
포함 parm
cur
포함 =
compgen -W "a b c" -- =
아무것도 출력하지 않음
당신은 그것을 사용할 수 있습니다_get_comp_words_by_ref
~에서배쉬 완료:
source bash-completion # /usr/share/bash-completion/bash_completion on Ubuntu with bash-complete installed
function _completion_command() {
local cur prev
_get_comp_words_by_ref -n = cur prev
case "$prev" in
-u)
case "$cur" in
parm=*)
COMPREPLY=($(compgen -W "a b c" -- ${cur#*=}))
return 0;
;;
*)
compopt -o nospace
COMPREPLY=($(compgen -S\= -W "parm" -- $cur))
return 0;
;;
esac
;;
esac
COMPREPLY=($(compgen -W "-u" -- $cur))
}
complete -F _completion_command command