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