同じスクリプトで bash の "getopts" 関数を 2 回使用できますか?
特定のオプションの値に応じて異なる意味を持つ一連のオプションがあります。getopts がその特定のオプションを最初に評価することを保証できないため、その特定のオプションのみを使用して getopts を 1 回実行し、それから他のオプションを使用して 2 回目に実行したいと考えています。
はい、後で OPTIND をリセットしてください。
#!/bin/bash
set -- -1
while getopts 1 opt; do
case "${opt}" in
1) echo "Worked!";;
*) exit 1;
esac
done
OPTIND=1
set -- -2
while getopts 2 opt; do
case "${opt}" in
2) echo "Worked!";;
*) exit 1;
esac
done
getoptsは、古いgetoptスタンドアロン実行可能ファイルとは対照的に、元の引数を変更しません。元の入力を変更せずに、bashに組み込まれているgetoptsを何度も使用できます。
詳細については、bashのmanページを参照してください。
HTH。
乾杯、
ロブ