heredoc (<<) подставляет блок текста как stdin команде — без склеивания строк через \n и без экранирования кавычек.

cat <<EOF > /etc/nginx/conf.d/app.conf
server {
    listen 80;
    server_name app.local;
}
EOF

Herestring (<<<) — то же самое, но для одной строки:

grep "error" <<< "$log_line"

Если EOF в кавычках (<<'EOF') — переменные внутри блока не подставляются, текст передаётся как есть. Без кавычек — $var и `cmd` раскрываются. <<-EOF убирает ведущие табы, что позволяет делать отступы внутри if/function без искажения вывода.

#linux #bash #heredoc #sysadmin