Я делаю сценарий bash, который использует как длинные параметры, так и короткие флаги. Так как я хочу длинные варианты, я не могу использовать getopts
. Я попытался использовать следующий код:
while test -n "$1"; do
case "$1" in
-o|--override) NO_CHANGE=yes;shift 1;;
-r|--reset) OV_RESET=yes;shift 1;;
-h|--help) hthemehelp;shift 1;;
*) break;;
esac
done
Это работает, когда я вызываю его как myscr -o -r
или myscr -h
, но когда я пробую myscr -or
программа просто запускает свое нормальное поведение, и, выполняя myscr -or -h
она выходит из цикла, прежде чем доберется до -h
. Замена break
на continue
приводит к myscr -or
и myscr -or -h
.