bash heredoc и блок кода

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

Вот так все работает нормально:

      #!/usr/bin/env bash

some_command_1
((
echo "Some text (in parenthness too)"
echo "Another text without them"
) &2>1 )|tee log.txt
some_command_2
exit 0

Он выводит данные на стандартный ввод/stderr и в файл журнала, как и ожидалось.

Но этот сценарий:

      #!/usr/bin/env bash

some_command_1
((
cat <<EOF
Some text (in parenthness too)
Another text without them

EOF
) &2>1 )|tee log.txt
some_command_2
exit 0

Выдает ошибку:

предупреждение: здесь документ в строке 9 ограничен концом файла (требуется `EOF')

Другой текст без них: команда не найдена

./tmp.sh: строка 11: EOF: команда не найдена

ESCaping, подобный этому "(" ничего не делает.

Почему?

0 ответов

Другие вопросы по тегам