4

同じスクリプトで bash の "getopts" 関数を 2 回使用できますか?

特定のオプションの値に応じて異なる意味を持つ一連のオプションがあります。getopts がその特定のオプションを最初に評価することを保証できないため、その特定のオプションのみを使用して getopts を 1 回実行し、それから他のオプションを使用して 2 回目に実行したいと考えています。

4

2 に答える 2

5

はい、後で 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
于 2008-09-28T00:18:43.663 に答える
2

getoptsは、古いgetoptスタンドアロン実行可能ファイルとは対照的に、元の引数を変更しません。元の入力を変更せずに、bashに組み込まれているgetoptsを何度も使用できます。

詳細については、bashのmanページを参照してください。

HTH。

乾杯、

ロブ

于 2008-09-28T01:03:05.507 に答える