このコードがあり、コマンドラインから呼び出すと、各オプションのオプション/エコーにエコーが表示されますが、$OPTARGは定義されていません。理由はわかりません。
OPTIND=1
optm=
optl=
while getopts "ml:" opt
do
case "$opt" in
m)
optm=$OPTARG
echo "m was triggered"
;;
l)
moznostl=$OPTARG
echo "l was triggered"
;;
esac
done
shift "$((OPTIND-1))"
2番目の質問は次のとおりです。
OPTIND=2
2番目のパラメータで始めるために使用できますか?私の言葉はそれがうまくいくことを意味しますが、さらにはこれは正当な方法です。たとえば、
./project first -l second
したがって、最初の引数をスキップして-l?で始まります。
ベストアンサー1
この行があります。
while getopts "ml:" opt
m
これは引数なしで存在でき、1つの引数しかl
取ることができないことをシェルに伝えます。
getopts 'm:l' opt
.