20

我有一个包含一些 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}

为什么我丢失了反斜杠和初始空格?

如何保存它们?

4

2 回答 2

26

您丢失了反斜杠和空格,因为 bash(通过其 read 内置函数)正在评估文本的值 - 替换变量,寻找转义字符(制表符,换行符)等。有关详细信息,请参阅手册页。此外, echo 将结合空格。

至于保存它们,我不确定你能做到。您可能会通过执行以下操作来获得反斜杠:

while read -r line
  do
    echo $line
  done < "my.tex"

这应该修改 read 以不尝试评估反斜杠。不过,它可能仍会吞噬领先的空间。

编辑:将$IFS特殊变量设置为空字符串,如下所示:

export IFS=

在这种情况下将导致保留空间。

于 2012-07-19T16:12:18.463 回答
0

您可以perl用于部分或全部脚本要求吗?

perl -lne 'print;' my.tex

如果您以后必须使用其他工具进行脱壳,您可能仍然会遇到问题,除非您可以在文件中传递所需的数据。

于 2012-07-19T16:19:08.837 回答