長いオプション( "--option")のみをサポートしたいbashスクリプトがあります。 --option にはオプションで 1 つ以上の引数が含まれます。最初の「--」またはコマンドライン文字列の終わりを除くすべての単語(スペースで区切られたすべての単語)は、「--option-arguments」と見なされます。結果の末尾のスペースは大丈夫です。可能なすべてのオプションは他の関数によって呼び出されるため、最大のパフォーマンスが必要です。したがって、bashループと外部コマンドを避けてください。
「最初の発生」問題が見つかるまで数時間かけて賭けました。この回答これは、POSIX(およびbash)が貪欲ではなく、怠惰な正規表現演算子をサポートしないことを思い出させます。
何をすべきか?
ベストアンサー1
オプションは文字列として渡されず、次のように渡されるため、正規表現を使用して任意の方法でオプションを解析することはできません。リストひも。 、、、、および別の引数がmyscript --option foo bar -- qux
あり、スペースは含まれていません。myscript
--option
foo
bar
--
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などのより高いレベルのプログラミング言語が必要です。