Here Document 可一次性写入多行配置,避免重复 echo;基础语法为 cat > file <<EOF,支持变量替换、单引号禁用解析、<<- 忽略 tab 缩进。

用 Here Document 批量写入多行配置,核心是让脚本一次性把结构化内容写进文件,避免反复调用 echo 或手动拼接。关键在于语法准确、变量控制得当、缩进处理合理。
基础写法:覆盖或追加配置文件
最常用的是 cat > file (覆盖)和 <code>cat >> file (追加)。EOF 是自定义结束符,可换成 CONFIG、END 等,只要首尾一致即可。
-
覆盖写入:适合首次生成完整配置,如
cat > nginx.conf -
追加写入:适合日志段落、模块补充,如
cat >> app.conf - 结束符必须独占一行,前后不能有空格或制表符(除非用
)
变量与命令替换:动态生成配置值
默认情况下,Here Document 会解析 $VAR 和 $(command)。这对填入用户名、路径、时间等非常实用。
- 例如:
port=8080; cat > server.conf - 若需保留字面量(如写
$HOME而不展开),把结束符用单引号括起来: - 注意:双引号、无引号的结束符都允许替换;单引号则完全禁用所有扩展
美化脚本结构:用
在函数或嵌套块中写 Here Document 时,常需要缩进保持可读性。 能自动去掉每行开头的 Tab 字符(不是空格!)。
- 写法示例:
cat - 正文每行可用 Tab 开头,但结束符仍需顶格写(无任何前导字符)
- 混用空格和 Tab 会导致部分行无法去缩进,建议只用 Tab 缩进此处
安全与健壮性建议
批量写配置不是“写完就行”,还要考虑路径存在性、权限、内容校验等实际问题。
- 先确保目录存在:
mkdir -p /etc/myapp再写入目标文件 - 写入后加校验(如
grep -q "listen" /etc/myapp/conf) - 敏感配置(如密码)避免直接写进脚本;可用
read -s交互输入后注入 - 临时测试可用
cat 预览内容再决定是否落盘

















