私は、1 つのオプションのパラメーター ( -t ) の後にいくつかの追加の引数が続く単純な bash スクリプトを作成しています。
getopts はこれを達成するための合理的な方法だと思っていましたが、目的の動作を得るのに苦労しています。私が持っているものは次のとおりです。
foo() {
baz=10
while getopts ":t:" option; do
case "$option" in
t) baz=$OPTARG ;;
esac
done
shift $((OPTIND - 1))
bar -t $baz $1 $2 $3
}
問題は$OPTIND
、引数が存在するかどうかによって変化しないように見えるため、オプションのパラメーターで期待どおりの正しい動作が得られないことです (つまり、シフトに関係なく、正しい数の引数をシフトすることができません)。引数があるかどうか)。
次の両方を正しく実行したい:
foo a b c
foo -t 5 a b c
これを達成する最も簡単な方法は何ですか?追加のオプションのパラメーターを使用したい場合があるため、ハックではないソリューションをお勧めします。