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(組み込みの読み取りを介して)がテキストの値を評価しているため、バックスラッシュとスペースが失われました。変数の置換、エスケープ文字(タブ、改行)の検索などです。詳細については、マンページを参照してください。また、エコーは空白を結合します。

それらを保存する限り、私はあなたができるかどうかわかりません。次の手順を実行すると、おそらく円記号を取り戻すことができます。

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

これは、バックスラッシュを評価しようとしないように読み取りを変更する必要があります。ただし、それでも先頭のスペースを飲み込む可能性があります。

編集:次の$IFSように、特別な変数を空の文字列に設定します。

export IFS=

この場合、スペースが保持されます。

于 2012-07-19T16:12:18.463 に答える
0

スクリプト要件の一部またはすべてに使用できますperlか?

perl -lne 'print;' my.tex

後で他のツールにシェルアウトする必要がある場合でも、必要なデータをファイルに渡すことができない限り、問題が発生する可能性があります。

于 2012-07-19T16:19:08.837 に答える