bash - 출력 - 쉘 스크립트



Bash:파일을 읽을 때 손실 된 특수 문자 (2)

bash (내장 된 read를 통해)는 텍스트를 대체하는 변수의 값을 평가하고 이스케이프 문자 (탭, 줄 바꿈)를 찾는 등의 이유로 백 슬래시와 공백을 잃어 버렸습니다. 자세한 내용 은 맨 페이지 를 참조하십시오. 또한 echo는 공백을 결합합니다.

저들을 보전하는 한, 당신이 할 수 있을지 확신하지 못합니다. 다음과 같이 백 슬래시를 다시 가져올 수 있습니다.

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

백 슬래시를 평가하지 않으려면 읽기를 수정해야합니다. 그래도 여전히 선두 공간을 삼킬 것입니다.

편집 : $IFS 특수 변수를 다음과 같이 빈 문자열로 설정하십시오.

export IFS=

이 경우 공백이 보존됩니다.

https://src-bin.com

라텍스가 들어있는 파일이 있습니다.

\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}

백 슬래시와 초기 공백을 잃은 이유는 무엇입니까?

그들을 보존하는 방법?


Answer #1

스크립트 요구 사항의 일부 또는 전부에 perl 을 사용할 수 있습니까?

perl -lne 'print;' my.tex

나중에 다른 도구로 쉘 아웃해야하는 경우 필요한 데이터를 파일에 전달할 수 없다면 문제가 발생할 수 있습니다.





escaping