私は現在、スクリプトで許可されているコマンドのリスト(「pbt」と呼ばれる)から単一のパラメーターを完了するBash完了ファイルを持っています。これは、機能するBashCompletionファイルです。
_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)を完了しますが、これは問題ありません。
ここで、完了に「2番目の」レベルを追加したいと思います。たとえば、私が入力した場合
pbt asadmin <tab>
asadmin内でのみ使用可能なすべてのオプションを完了する必要があります-"environment"(これはbash完了ファイル内でも定義します)、たとえばpbt asadmin [start-domain|stop-domain]
、
pbt deploy <tab>
たとえば、別のオプションのセットを完了する必要がありますpbt deploy [all|current]
。したがって、2番目のコマンドのオプションは、常に最初のコマンドに依存する必要があります。完了ファイルでそれを行うにはどうすればよいですか?