Параметры выхода для позиционных аргументов

Согласно страница Debian Wiki в формате репозитория :

  • Эти поля необязательны. Они могут отображаться пользователю с помощью инструмента управления пакетами или использоваться для закрепления. Предполагается, что любой репозиторий , опубликованный для использования другими пользователями, заполнял значимую информацию в этих полях, чтобы пользователь мог различать разные репозитории .

    • Описание
    • Источник
    • Метка
    • Версия
    • Набор
    • Кодовое имя

    В репозиториях Debian индексы хранятся в каталоге с именем после набора или кодового имени (на самом деле один символически связан с другим). Однако в файле выпуска может быть указано другое расположение.

  • Эти поля определяют структуру репозитория и должны содержать что-то значимое для пользователя. В Debian эти поля могут содержать строчные буквы, числа, - и _ . Другие символы (например, прописные буквы) также должны работать, но эти поля используются для путей к файлам , поэтому использование специальных символов, которые могут нуждаться в особой обработке в URI или файловой системе, не рекомендуется. .

    • Компоненты
    • Архитектуры
  • Эти поля являются чисто функциональными и используются в основном для внутренних целей инструментами упаковки .

    • Дата
    • Действителен до
    • MD5Sum, SHA1, SHA256
    • NotAutomatic и ButAutomaticUpgrades

Необходимые поля:

  • Компоненты
  • Архитектуры

Их достаточно для плоские макеты ( deb http://example.org path / ) Для архивов официального стиля ( deb http://example.org stable main ) дополнительное поле требуется:

  • Кодовое имя

3
24.02.2019, 21:18
1 ответ

Цитирование простое, вы можете использовать одинарные кавычки вместо двойных:

EGO_BUILD_FLAGS='-ldflags "-X main.buildVersion=0"'

Но проблема не в этом:

$ go build -x ${EGO_BUILD_FLAGS} github.com/g4s8/gitstrap/cmd/gitstrap
invalid value "\"-X" for flag -ldflags: missing =<value> in <pattern>=<value>
usage: go build [-o output] [-i] [build flags] [packages]
Run 'go help build' for details.

Проблема в том, что вы передаете содержимое переменной как одно значение. Посмотрите, что произойдет, если вы запустите это сset -x:

$ set -x
$ go build -x ${EGO_BUILD_FLAGS} github.com/g4s8/gitstrap/cmd/gitstrap
+ go build -x -ldflags '"-X' 'main.buildVersion=0"' github.com/g4s8/gitstrap/cmd/gitstrap
invalid value "\"-X" for flag -ldflags: missing =<value> in <pattern>=<value>
usage: go build [-o output] [-i] [build flags] [packages]
Run 'go help build' for details.

Самое простое решение — удалить -ldflagsиз вашей переменной и сохранить только те значения, которые вы хотите передать с помощью -ldflags.Затем вы можете использовать свою переменную по своему усмотрению:

EGO_BUILD_FLAGS='-X main.buildVersion=0'
go build -x -ldflags ${EGO_BUILD_FLAGS} github.com/g4s8/gitstrap/cmd/gitstrap

Если это невозможно, вместо этого можно использовать массив:

EGO_BUILD_FLAGS=('-ldflags' '-X' 'main.buildVersion=0')
go build -x "${EGO_BUILD_FLAGS[@]}" github.com/g4s8/gitstrap/cmd/gitstrap

Наконец, можно было просто не заключать в кавычки значения, которые вы установили в переменной:

EGO_BUILD_FLAGS='-ldflags -X main.buildVersion=0'
1
27.01.2020, 21:29

Теги

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