我有一个包含一些 Latex 的文件:
\begin{figure}[ht]
\centering
\includegraphics[scale=0.15]{logo.pdf}
\caption{Example of a pdf file inclusion}
\label{fig:pdfexample}
\end{figure}
我想在 bash 脚本中阅读它:
while read line
do
echo $line
done < "my.tex"
输出是
begin{figure}[ht]
centering
includegraphics[scale=0.15]{logo.pdf}
caption{Example of a pdf file inclusion}
label{fig:pdfexample}
为什么我丢失了反斜杠和初始空格?
如何保存它们?
最佳答案
您丢失了反斜杠和空格,因为 bash(通过其内置的 read)正在评估文本的值 - 替换变量、寻找转义字符(制表符、换行符)等。参见 the manpage一些细节。此外,echo 将合并空格。
就保存它们而言,我不确定您是否可以。您可能会通过执行以下操作来取回反斜杠:
while read -r line
do
echo $line
done < "my.tex"
应该修改 read 以不尝试计算反斜杠。不过,它可能仍会吞下前导空格。
编辑:将 $IFS
特殊变量设置为空字符串,如下所示:
export IFS=
在这种情况下会保留空格。
关于Bash:读取文件时丢失特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11564778/