POSIX 正規表現は、文字列の最初の出現と一致します。

POSIX 正規表現は、文字列の最初の出現と一致します。

長いオプション( "--option")のみをサポートしたいbashスクリプトがあります。 --option にはオプションで 1 つ以上の引数が含まれます。最初の「--」またはコマンドライン文字列の終わりを除くすべての単語(スペースで区切られたすべての単語)は、「--option-arguments」と見なされます。結果の末尾のスペースは大丈夫です。可能なすべてのオプションは他の関数によって呼び出されるため、最大のパフォーマンスが必要です。したがって、bashループと外部コマンドを避けてください。

「最初の発生」問題が見つかるまで数時間かけて賭けました。この回答これは、POSIX(およびbash)が貪欲ではなく、怠惰な正規表現演算子をサポートしないことを思い出させます。

何をすべきか?

ベストアンサー1

オプションは文字列として渡されず、次のように渡されるため、正規表現を使用して任意の方法でオプションを解析することはできません。リストひも。 、、、、および別の引数がmyscript --option foo bar -- quxあり、スペースは含まれていません。myscript--optionfoobar--qux

ループはbashのメソッドです。

case "$1" in
  --option1)
    shift
    while [[ $# -ne 0 && "$1" != "--" ]]; do
      option1_args+=("$1")
      shift
    done
    (($# == 0)) || shift
done

パフォーマンスが大きな問題であれば、bashを使用しないでください。 kshを試してください。無料で、ほぼどこでも利用できます。基本的にインストールされていなくても、通常はbashよりはるかに高速です。それでも遅すぎる場合は、Perl、Python、Rubyなどのより高いレベルのプログラミング言語が必要です。

おすすめ記事