
デフォルトでは、私の(bashではなく)プログラムを呼び出して出力をに設定する単純なbash完了スクリプトがありますCOMREPLY
。
COMPREPLY=( $(my-program -- "${COMP_WORDS[@]}") )
一部のオプションでは、カンマで区切られた値を受け入れます。最後のアイテムだけを処理する方法についての提案はありますか?ユーザー入力を想定し、-v opt1,opt2,o<TAB><TAB>
私のプログラムがこの時点で有効なオプションがあることをopt3
発見したとしましょうopt4
。この2つを返してTABを押すと、出力がo
(完全接頭辞が消える)に変わります。opt1,opt2,opt3
合計を返すとうまくopt1,opt2,opt4
いきますが、ビューにはよくありません。
考えられる解決策は、次のことを行うことです。Bash完了コンマ区切り値つまり、my-program
generateを呼び出し、プレフィックスが付く[opt3, opt4]
単語のリストに渡します。ただし、これを行うには、bashスクリプトでいくつかのロジックを複製する必要があります。たとえば、より良い方法はありますか?compgen
opt1,opt2,
my-program