Linux 中 EOF 内容转义
在 Linux 系统中通过 shell + cat 可以直接讲内容写入到文件中,特别是想通过命令脚本写入时,比交互式的 vim 命令方便多了。但是,当遇到特殊符号 $ 时,总会将内容转义,无法写入正确的内容。本篇给出两种解决方法。
cat + EOF
cat 是一个 bash 命令,用于读取、显示或连接文件的内容,而 EOF 代表 End Of File。EOF 向 shell 表明正在读取的文件已经结束。cat << eof 使用 here-document。重定向运算符 << 和 <<- 都允许将 shell 读取的后续行重定向到命令的输入。重定向的行称为 here-document。
写入不包含 $ 等特殊字符的,可以直接使用如下方法:
1 | cat > /home/jinzhongxu/test.service <<EOF |
或采用更兼容的形式
1 | cat > /home/jinzhongxu/test.service <<-EOF |
1 | cat > /home/jinzhongxu/test.service <<-EOF # 这里EOF前带有-,最后的EOF可以不用顶格写 |
我们还可以使用 cat、<<、EOF 和 > 以交互方式编写如下所示的 bash 脚本。
1 | cat << EOF > script.sh |
特殊字符 cat + “EOF”
当书写的内容中有特殊字符的情况,解决方法如下:
- 增加反斜杠转义
1 | cat > /home/jinzhongxu/test.service <<-EOF |
- 直接转义,在第一个 EOF 左右增加双引号
1 | cat > /home/jinzhongxu/test.service <<-"EOF" |
参考文献
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 J. Xu!
评论









