У меня неожиданное поведение — следующий фрагмент завершается ошибкой «непривязанная переменная»:
#!/bin/bash
set -u
<<EOF
a=a
b=$a
EOF
Протестировано на:
GNU bash, версия 4.4.12(1)-релиз
GNU bash, версия 4.2.46(2)-релиз
решение1
То, что вы определили, set -u
— это принудительный выход с сообщением об ошибке при попытке использовать неопределенную переменную (Встроенная set
команда).
Форма here-документов <<
с EOF
эквивалентом двойных кавычек слов внутри, чтобы позволить оболочке расширять переменные (расширение параметров) ( bash
в данном случае; также подлежит подстановке команд и арифметическому расширению). Чтобы избежать расширения, заключите here-строку в одинарные кавычки
set -u
<<'EOF'
a=a
b=$a
EOF