В настоящее время у меня есть файл завершения Bash, который завершает один параметр из списка разрешенных команд для скрипта (называемый «pbt»). Это рабочий файл Bash Completion:
_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- "environment" (которую я также определю в файле завершения bash), скажем, например, pbt asadmin [start-domain|stop-domain]
Но если я наберу
pbt deploy <tab>
он должен завершиться другим набором опций, например pbt deploy [all|current]
. Таким образом, параметры для второй команды всегда должны зависеть от первой команды. Как я могу сделать это в файле завершения?