36

例で説明するのがおそらく最も簡単です:

$ echo '\&|'
\&|
$ echo '\&|' | while read in; do echo "$in"; done
&|

readコマンドが入力のバックスラッシュをエスケープとして解釈し、それらを削除しているようです。内容を変更せずにファイルを 1 行ずつ処理する必要がありますが、ここで読み取りを停止する方法がわかりません。何か案は?

4

2 に答える 2

50

によると: http://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html :

-r
このオプションを指定すると、バックスラッシュはエスケープ文字として機能しません。バックスラッシュは行の一部と見なされます。特に、バックスラッシュと改行のペアは、行の継続として使用できません。

それは私のマシンで動作します。

$ echo '\&|' | while read -r in; do echo "$in"; done
\&|
于 2009-05-29T04:47:43.443 に答える
6

http://www.ss64.com/bash/read.htmlread -rに従って、を使用します。

-r
このオプションを指定すると、バックスラッシュはエスケープ文字として機能しません。

于 2009-05-29T04:48:19.887 に答える