Сохранять вывод очень длинной команды в переменной multiline в bitbucket-pipelines.yml - PullRequest
0 голосов
/ 28 февраля 2020

Я могу сделать это

- var=`<some command>`

, но команда, которую я хочу, слишком длинная и содержит каналы, поэтому я хотел бы написать ее в отдельных строках, например:

- var=`<command>

  -arg1 value1

  -arg2 value2

 | awk '{print $2}' ...

`

, но это не работает.

1 Ответ

0 голосов
/ 25 марта 2020

Многострочные команды YML

Синтаксис YML поддерживает шаги, содержащие несколько строк. Просто начните шаг с "- |" и сделайте отступ на 2 колонки дальше. Смотрите пример здесь: Как мне запустить и остановить фоновую задачу на travis?

- |
  # This is a comment in the multi-line block
  if [ "$TEST_ADAPTER" = "HTTP" ]; then
    vendor/bin/httpd.php&
    SERVER_PID=$!

  # Blank lines are also supported
  fi

Вызов bash скрипта из YML

Вы также можете позвонить скрипт внешней оболочки из файла YML. Этот скрипт может содержать несколько строк:

- chmod +x my_script.sh # Make the script executable, if necessary
- ./my_script.sh # Run the external script
- bash ./my_script.sh # Run the external script

Переносить длинные строки в сценариях оболочки или командах YML

И сценарии YML, и сценарии оболочки поддерживают перенос длинных строк с символом backsla sh "\" в конце строки. Они называются bash линиями продолжения и описаны здесь Bash строки продолжения . Вот пример:

printf '%s' \
    "This will all be printed on a " \
    "single line (because the format string " \
    "doesn't specify any newline)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...