例で説明するのがおそらく最も簡単です:
$ echo '\&|'
\&|
$ echo '\&|' | while read in; do echo "$in"; done
&|
read
コマンドが入力のバックスラッシュをエスケープとして解釈し、それらを削除しているようです。内容を変更せずにファイルを 1 行ずつ処理する必要がありますが、ここで読み取りを停止する方法がわかりません。何か案は?
によると: http://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html :
-r
このオプションを指定すると、バックスラッシュはエスケープ文字として機能しません。バックスラッシュは行の一部と見なされます。特に、バックスラッシュと改行のペアは、行の継続として使用できません。
それは私のマシンで動作します。
$ echo '\&|' | while read -r in; do echo "$in"; done
\&|
http://www.ss64.com/bash/read.htmlread -r
に従って、を使用します。
-r
このオプションを指定すると、バックスラッシュはエスケープ文字として機能しません。