我目前有一个 Bash 完成文件,它从脚本的允许命令列表(称为“pbt”)中完成单个参数。这是有效的 Bash 完成文件:
_pbt_complete()
{
local cur goals
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
goals='asadmin clean deploy'
cur=`echo $cur`
COMPREPLY=($(compgen -W "${goals}" ${cur}))
}
complete -F _pbt_complete pbt
所以如果我打电话
pbt <tab>
Bash 完成所有允许的命令(asadmin、clean、deploy),这没关系。
现在我想为完成添加一个“第二”级别。例如,如果我输入
pbt asadmin <tab>
它应该完成仅在 asadmin-“环境”中可用的所有选项(我还将在 bash 完成文件中定义),例如pbt asadmin [start-domain|stop-domain]
但是如果我输入
pbt deploy <tab>
它应该完成另一组选项,例如pbt deploy [all|current]
. 所以第二个命令的选项应该总是依赖于第一个命令。我怎样才能在完成文件中做到这一点?