Ошибка Bash «непривязанная переменная» при ссылках на переменные в многострочном комментарии (set -u)

Ошибка Bash «непривязанная переменная» при ссылках на переменные в многострочном комментарии (set -u)

У меня неожиданное поведение — следующий фрагмент завершается ошибкой «непривязанная переменная»:

#!/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

Связанный контент