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!
评论