2009-05-29 1 views
16

は、おそらく最も簡単な例を挙げて説明しますsh読み込みコマンドが入力時にスラッシュを食べますか?

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

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

答えて

28

にAccrding:http://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html

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

私のマシンで動作します。 http://www.ss64.com/bash/read.htmlあたりとして

$ echo '\&|' | while read -r in; do echo "$in"; done 
\&| 
+1

恐ろしく、ありがとう!私はこれのためのドキュメントを見つけていないために愚かな気がするが、用語がかなり一般的なので検索するのは難しいものの1つだ:( –

+0

Btw、あなたは-rを必要としないどのシェルを使用していますか? –

+0

申し訳ありませんが、私はコピー貼り付けを使用していませんでした。編集中... –

5

使用read -r、:

-r
このオプションが指定された場合、バックスラッシュはエスケープ文字として作用しません。

+0

残念ながら私は答えとしてマークすることができ、Zsoltはほんの一瞬であなたを打ち負かします:) –

+0

ええ、私は知っているので、ほとんどの質問のために100メートルのレースです! –

関連する問題