Конфигурация импорта OpenSSH из внешних файлов

Сложность анализа односимвольных параметров заключается в том, что они могут быть объединены (например, -ab эквивалентно -a -b ). У длинных опций в стиле GNU есть трудность, связанная с тем, что аргументы можно объединить или нет. С опциями, состоящими из нескольких символов с одним тире, нет никаких сложностей при синтаксическом анализе, поэтому вы можете легко сделать это вручную.

Большинство программ с параметрами, состоящими из одного тире и нескольких символов, принимают аргументы в виде отдельного аргумента командной строки.

foo=
bar=default
require_argument () {
  if [ $# -eq 2 ]; then
    echo >&2 "$0: Option $1 requires an argument"
    exit 2
  fi
  eval "$1=\"\$3\""
}
while case "$1" in
        --) shift; false;;
        -foo) foo=1 
        -bar) require_argument bar "$@"; shift;;
        -?*) echo >&2 "$0: Unknown option $1"; exit 2;;
        *) false;;
      esac
do
  shift
done

Рассмотрите возможность использования длинных опций в стиле GNU. У них более стандартизованное поведение, и с ними знакомо больше людей.

2
10.02.2016, 00:22
0 ответов

Теги

Похожие вопросы