У меня есть bash script, команды которого я соединяю цепочкой, используя &&, так как я хочу, чтобы script остановился, если отдельные шаги завершились с ошибкой.
Один из шагов создает файл конфигурации на основе heredoc:
some_command &&
some_command &&
some_command &&
some_command &&
some_command &&
some_command &&
cat > ./my-conf.yml <<-EOF
host: myhost.example.com
... blah blah ...
EOF
... lots more commands ...
Как включить эту команду в цепочку &&? Я пробовал:
- Размещение
&&сразу после EOF. Не работает, поскольку EOF должен быть на линии сам по себе. - Размещение
&&на отдельной строке после EOF. Не работает, потому что bash думает, что я пытаюсь использовать&&в качестве команды. - Размещение
&&перед редиректором>. Не работает, поскольку редиректоры логически являются частью команды&&-ed.
УТОЧНЕНИЕ:
Существует множество (многострочных) команд, следующих за командой, которая генерирует файл конфигурации из heredoc, поэтому в идеале я ищу решение, которое позволяет мне добавлять следующие команды после heredoc, что является естественным потоком script. То есть, я бы предпочел не использовать встроенные 20+ команд в одной строке.