heredoc и herestr в bash
В Python, например, есть встроенная конструкция
''' ... '''
, но в bash есть особые идиомы встроенных документов (here-document/heredoc) и встроенных строк (here-string/herestr), позволяющие хранить и отображать блоки текста с минимумом разделителей/команд.
Heredoc
Синтаксис heredoc:
fd ⇒ редко используемый идентификатор файла
дефис (-) ⇒ удаляет начальные табуляции (не пробелы). Он позволит оформить встроенный документ с отступами (но только табами), которые автоматически удалятся при выводе.
кавычки ⇒ выключают интерполяцию содержимого. Без кавычек можно юзать переменные.
word не подлежит расширению с помощью параметров/переменных/имен файлов/подстановке команд/арифметическим операциям. word не может быть переменной.
То есть в heredoc не сработает:
Поэтому heredoc подходит для отображения справочной инфы (вместо использования множества echo/printf/кавычек).
Herestr
Синтаксис herestr:
В word возможны расширения параметров/переменных, подстановки команд/арифметические операции. Это, по сути, более простой heredoc без разделителя с \n
в конце.
Соус: Книга “Идиомы Bash” ⇒ Глава 5. “Файлы и не только” ⇒ “Встроенные документы и строки”