Прочтите Руководство по расширенному написанию сценариев Глава 19. Здесь документы .
Вот пример, который запишет содержимое в файл в /tmp/yourfilehere
cat << EOF > /tmp/yourfilehere
These contents will be written to the file.
This line is indented.
EOF
Обратите внимание, что в конце 'EOF' (LimitString
) не должно быть пробелов перед словом, поскольку это означает, что LimitString
не будет распознан.
В сценарии оболочки вы можете использовать отступы, чтобы сделать код читабельным, однако это может привести к нежелательному эффекту отступа текста в вашем документе здесь. В этом случае используйте <<-
(за которым следует тире), чтобы отключить начальные вкладки ( Примечание , что для проверки этого вам потребуется заменить начальный пробел символом табуляции , поскольку Я не могу напечатать фактические символы табуляции здесь.)
#!/usr/bin/env bash
if true ; then
cat <<- EOF > /tmp/yourfilehere
The leading tab is ignored.
EOF
fi
Если вы не хотите интерпретировать переменные в тексте, используйте одинарные кавычки:
cat << 'EOF' > /tmp/yourfilehere
The variable $FOO will not be interpreted.
EOF
Чтобы передать heredoc через командный конвейер:
cat <<'EOF' | sed 's/a/b/'
foo
bar
baz
EOF
Выход:
foo
bbr
bbz
... или записать heredoc в файл, используя sudo
:
cat <<'EOF' | sed 's/a/b/' | sudo tee /etc/config_file.conf
foo
bar
baz
EOF