我有一个允许在后台执行Bash进程的脚本,我将其称为“backy”。我想在后台运行的程序我这样称呼:
backy long-running-script param1 param2
现在的问题是,如果我添加另一个脚本,我会松开long-running-script
的Bash完成。
我想编写一个Bash完成文件,它不仅保留long-running-script
的Bash完成及其所有参数,也保留了我想用goy调用的每个其他脚本。
我有一些Bash完成的经验,但我只是错过了我可以插入到我的Bash完成脚本中的命令,以便在完成要调用的脚本时完成。有什么想法吗?
到目前为止我完成了:
have backy &&
_backy_complete()
{
local cur prev goals
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
# How to get the completion from the script that is the param for backy,
# in a generic way?
COMPREPLY=( ????? )
return 0
} &&
complete -F _backy_complete backy
编辑 - 解决方案:
感谢Lekensteyn,我用这一行替换了现有bash完成脚本的内容:
complete -F _command backy
答案 0 :(得分:4)
对于这种情况,已经存在bash_completion函数:
complete -F _command backy
它用于在sudo
,fakeroot
和其他人之后自动填充命令。传递给backy的任何参数都会被忽略,如:
backy --whatever --this --is=ignored not ignored anymore