我正在尝试编写一个通用的自动完成函数(实际上需要多个参数,并且具有许多共享逻辑),以便我可以轻松整洁地维护长列表中的类似命令和类似自动完成(参数数量等)。
我已经有了一个bash函数,它接受一个参数(尽可能简化):
_autocomplete() {
COMPREPLY=( $(compgen -W "$1" -- "${COMP_WORDS[COMP_CWORD]}") )
return 0
}
当我引用它时,使用一个需要函数名作为参数的命令,我也想传递一个参数以在函数中运行:
complete -F "_autocomplete example_param" some_function
然而,当我按tab键时,这个方法不起作用,并出现以下错误:
some_function bash: completion: function `_autocomplete example_param' not found
这是complete
的限制吗?
有没有其他方法可以解决,或者更好的方案?
谢谢。