我是compgen的新手,我想将它用于我正在处理的脚本。此脚本可以使用"commands“和"options”作为参数,如下所示:
script add "value"
script --path "/a/file/path" add "value"
# and others我写了一个完成脚本,看起来像这样:
_script_completions() {
arg_index="${COMP_CWORD}"
if [[ "${arg_index}" -eq 1 ]]; then
COMPREPLY=($(compgen -W "--path add" "${COMP_WORDS[1]}"))
fi
}
complete -F _script_completions script此脚本在"add“命令下工作正常,但在"--path”选项上失败。例如:当我输入:
$ script --p<TAB>我得到了:
$ ./script --pbash: compgen: --: invalid option
compgen: usage: compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]如何正确地为我自己的脚本选项添加补全?
发布于 2021-06-06 00:55:00
对于compgen -W "--path add" "${COMP_WORDS[1]}"和script --p<tab>,最后一个参数${COMP_WORDS[1]}转换为--p,然后被解释为compgen的选项,而不是单词的补全。您可以使用参数--来标记选项的结尾:
_script_completions() {
arg_index="${COMP_CWORD}"
if [[ "${arg_index}" -eq 1 ]]; then
COMPREPLY=($(compgen -W "--path add" -- "${COMP_WORDS[1]}"))
fi
}
complete -F _script_completions scripthttps://stackoverflow.com/questions/67851740
复制相似问题