避免在Bash-here文档中转义
如何在Bash-here文档中存储文本而不必转义特殊字符?例如,如何修改以下脚本以保留LaTeX代码避免在Bash-here文档中转义,bash,escaping,latex,heredoc,Bash,Escaping,Latex,Heredoc,如何在Bash-here文档中存储文本而不必转义特殊字符?例如,如何修改以下脚本以保留LaTeX代码 #!/bin/bash IFS= read -d '' titlePage << "EOF" \documentclass{article} \usepackage{graphicx} \usepackage{fix-cm} \begin{document} \pagestyle{empty} \vspace*{\fill} \begin{center} \hrule \vspac
#!/bin/bash
IFS= read -d '' titlePage << "EOF"
\documentclass{article}
\usepackage{graphicx}
\usepackage{fix-cm}
\begin{document}
\pagestyle{empty}
\vspace*{\fill}
\begin{center}
\hrule
\vspace{1.5 cm}
\textbf{
\fontsize{25}{45}\selectfont
The Title\\
of\\
\fontsize{45}{45}\selectfont
\vspace{0.5 cm}
THIS DOCUMENT\\
\vspace{1.5 cm}
\hrule
\vspace{3.5 cm}
}
\end{center}
\vspace*{\fill}
\end{document}
EOF
echo "${titlePage}" >> 0.tex
pdflatex 0.tex
对于这样的东西,你也可以考虑把它从文件本身中排除出来。 它还将代码与数据分开。这就是我经常使用它的原因
#!/bin/sh
titlepage=$(sed '1,/^#START-TITLE/d;/^#END-TITLE/,$d' $0)
....
exit 0
#START-TITLE
.....
#END-TITLE
也考虑一个缩进的DOC:
foo <<- \marker
tab-indented text
marker
<>这也给出了一些视觉上的分离。 对于这样的东西,你也可以考虑把它从文件本身中拖出来。 它还将代码与数据分开。这就是我经常使用它的原因
#!/bin/sh
titlepage=$(sed '1,/^#START-TITLE/d;/^#END-TITLE/,$d' $0)
....
exit 0
#START-TITLE
.....
#END-TITLE
也考虑一个缩进的DOC:
foo <<- \marker
tab-indented text
marker
这也提供了一些视觉分离。免责声明:
有关正确且最简单的解决方案,请参阅。
虽然这个答案一直有效,但它最初包含了一个不正确的说法。现在这只是一个替代方案。
由于此处分配了一个变量,另一种解决方案是使用常规但多行的单引号字符串文字:
字符串中的空格很重要:
内容在“开始”之后立即开始。
结束时,在最后一个字符后直接放置结束符除非您想要终止\n。
此方法不提供-here doc选项,该选项用于剥离前导选项卡以允许缩进以获得视觉清晰度。
免责声明:
有关正确且最简单的解决方案,请参阅。
虽然这个答案一直有效,但它最初包含了一个不正确的说法。现在这只是一个替代方案。
由于此处分配了一个变量,另一种解决方案是使用常规但多行的单引号字符串文字:
字符串中的空格很重要:
内容在“开始”之后立即开始。
结束时,在最后一个字符后直接放置结束符除非您想要终止\n。
此方法不提供-here doc选项,该选项用于剥离前导选项卡以允许缩进以获得视觉清晰度。
问题不在于here文档,而在于read解析其输入。使用read-r应该有帮助;或者,如果你真的只想把here文档放在一个文件中,cat问题不在于here文档,而在于read解析它的输入。使用read-r应该有帮助;或者如果你真的只想把这里的文件归档,cat