我有一个简单的 bash 完成脚本,它基本上调用我的(非 bash)程序并将其输出设置为COMREPLY
,即
COMPREPLY=( $(my-program -- "${COMP_WORDS[@]}") )
Run Code Online (Sandbox Code Playgroud)
一些选项接受逗号分隔值,有没有办法只处理最后一项的建议?假设用户键入-v opt1,opt2,o<TAB><TAB>
,假设我的程序此时发现有效选项是opt3
or opt4
。如果我只返回那些 2 并按 TAB,输出将更改为o
(整个前缀消失)。如果我返回opt1,opt2,opt3
and opt1,opt2,opt4
,它会起作用,但这看起来不太好。
可行的办法是做类似的东西猛砸完成了逗号分隔值,也就是调用my-program
生成[opt3, opt4]
,并传递作为单词表compgen
与opt1,opt2,
作为前缀。但这需要在 bash 脚本中复制一些逻辑,如my-program
. 有没有更好的办法?