Bashのマニュアルページには、シェル機能を完了するために使用できる引数が記載されています。
シェル関数が呼び出されると、COMP_WORDS変数とCOMP_CWORD変数も設定されます。
現在の単語と前の単語を識別するためにこれらのパラメータを使用するのが一般的なイディオムのようです。
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
しかし、その文書は続けてこう述べています。
関数またはコマンドが呼び出されると、最初の引数は引数が完成するコマンドの名前、2番目の引数は完成する単語、3番目の引数は現在のコマンドラインで完成する単語の前の単語です。
したがって、上記のコードは次のように置き換えることができます。
cur=$2
prev=$3
私は「野生で」これらの使用法の例を見たことがありません。なぜそんなことですか?人々はこれらのパラメータがすでに利用可能であるという事実を認識していないのでしょうか、それともこのパラメータに依存しないべき説得力のある理由がありますか?
bash完成プロジェクトでより細かい完成メカニズムが提供されることに気づきました(v1、 v2)、したがって、前の例のどれも高度なユースケースには理想的ではありませんが、単純なユースケースでは位置パラメータをすぐに使用できますが、なぜ誰もそれを使用しないのですか?