更新于 2025-10-06
在日常 Bash 脚本或命令行操作中,常常需要将多行文本写入到文件,比如生成配置文件、批量输出日志、自动化脚本等。
本文将详细介绍几种常用的 Bash 写入多行文本的方法,并重点讲解 Here Document 的用法和原理。
Here Document 是 Bash 用于向命令或文件传递多行文本的强大工具,语法简洁,功能丰富。用法如下:
cat <<EOF > filename.txt
第一行内容
第二行内容
第三行内容
EOF
<<EOF
表示开始 Here Document,EOF
是结束标识符,可以自定义为其他字符串(如 END
、TXT
),但前后一致即可。>
表示覆盖写入,>>
表示追加写入。EOF
和结束标识符之间的内容将全部写入文件(或传递给命令)。变量替换和转义
Here Document 支持变量和命令替换:
name="Alice"
cat <<EOF
Hello, $name!
EOF
输出内容为:Hello, Alice!
如果希望内容原样输出(禁用变量和转义),可以为结束标识符加单引号:
cat <<'EOF'
Hello, $name!
EOF
输出内容为:Hello, $name!
追加写入
cat <<EOF >> filename.txt
追加内容
EOF
作为命令输入
Here Document 不仅可以写文件,还能作为命令的多行输入,例如:
mysql -u user -p <<EOF
SHOW DATABASES;
USE mydb;
SELECT * FROM users;
EOF
用于多行注释
Bash 没有多行注释,但可以借助 Here Document 达到类似效果:
: <<'COMMENT'
这里是
多行注释
COMMENT
:
是空命令,内容不会被执行,相当于注释。
注意事项
EOF
)必须独占一行且不能有前后空格。cat
。echo -e "第一行内容\n第二行内容\n第三行内容" > filename.txt
-e
选项使 echo
支持转义字符(如 \n
)。printf "第一行内容\n第二行内容\n第三行内容\n" > filename.txt
printf
语法与 C 类似,适合需要精确控制格式的场景。echo "第一行内容" > filename.txt
echo "第二行内容" >> filename.txt
echo "第三行内容" >> filename.txt
>
,后续用 >>
追加。