BASH getopts OPTARG 未定義

BASH getopts OPTARG 未定義

このコードがあり、コマンドラインから呼び出すと、各オプションのオプション/エコーにエコーが表示されますが、$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.

おすすめ記事