BASH getopts OPTARG undefined

У меня есть этот код, и когда я вызываю его в командной строке, он показывает эхо в опции / тот, который у меня есть в каждой опции /, но $ 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))" 

и мой второй вопрос: OPTIND=2 можно ли это использовать, чтобы начать со второго аргумента? Я имею в виду, что это работает, но это естественный способ сделать это. например:

 ./project first -l second 

так что он пропустит первый ажиотаж и начнет с -l?

У вас есть эта строка

 while getopts "ml:" opt 

Это сообщает оболочке, что m может существовать, но не принимает никакого параметра, и что l может отображаться только с одним параметром.

Я подозреваю, что вы хотели использовать getopts 'm:l' opt .