Как передать аргумент в файле сценария .shell - PullRequest
0 голосов
/ 19 сентября 2019

Это первый раз, когда я пытаюсь отредактировать файл .sh в Ubuntu

ng build @xyz--abc/my-${library}

Я пытаюсь передать флаг --build-optimizer=false, но если я добавлю его в конец, он выдаст ошибку Unknown option: '--build-optimizer'

Нужна помощь, как я могу добавить этот флаг.

Спасибо

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

Обычно синтаксический анализ параметров аргументов командной строки реализуется либо встроенной в bash getopts, либо одной из реализаций getopt, специфичных для платформы.Хотя getopts не поддерживает синтаксический анализ длинных параметров командной строки, реализация GNU getopt поддерживает.Этот ответ подробно указывает на различия между соответствующими реализациями.Пример использования встроенной функции bash getopts приведен в Расширенном руководстве по созданию сценариев Bash .

. Чтобы дать вам правильный ответ, оно зависит от того, какСценарий, который вы пытаетесь изменить, реализует синтаксический анализ параметров командной строки.

0 голосов
/ 19 сентября 2019
LS_OPTIONS=''

while [ $# -gt 0 ]; do
  case "$1" in
    --color=*)
      colorarg="${1#*=}"
      LS_OPTIONS="${LS_OPTIONS} ${1}"
      ;;
    -a|--all)
      allarg="${1}"
      LS_OPTIONS="${LS_OPTIONS} ${1}"
      ;;
    *)
      printf "* Error: Invalid argument.*\n"
      exit 1
  esac
  shift
done


printf "all   val: %s\n\n" "$allarg"
printf "color val: %s\n\n" "$colorarg"

ls ${LS_OPTIONS}

Разбирает аргументы и передает их базовому ls.Это то, что вы пытаетесь достичь?

demo

...