Bashは独自のcompgenプレフィックスを完成させます。

Bashは独自のcompgenプレフィックスを完成させます。

デフォルトでは、私の(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-programgenerateを呼び出し、プレフィックスが付く[opt3, opt4]単語のリストに渡します。ただし、これを行うには、bashスクリプトでいくつかのロジックを複製する必要があります。たとえば、より良い方法はありますか?compgenopt1,opt2,my-program

ベストアンサー1

おすすめ記事