我有一个包含一些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}
为什么我会丢失反斜杠和初始空格?
如何保存它们?
答案 0 :(得分:20)
您丢失了反斜杠和空格,因为bash(通过其内置读取)正在评估文本的值 - 替换变量,查找转义字符(制表符,换行符)等。有关详细信息,请参阅the manpage。此外,echo将结合空格。
至于保存它们,我不确定你能不能。你可能会通过这样做来获得反斜杠:
while read -r line
do
echo $line
done < "my.tex"
应修改read以不尝试评估反斜杠。尽管如此,它可能仍会吞噬领先的空间。
编辑:将$IFS
特殊变量设置为空字符串,如下所示:
export IFS=
在这种情况下,将导致保留空格。
答案 1 :(得分:0)
您可以将perl
用于部分或全部脚本要求吗?
perl -lne 'print;' my.tex
如果您之后必须使用其他工具,那么您可能仍会遇到问题,除非您可以在文件中传递所需的数据。