2009-05-29 35 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
如果這個選項,則反斜槓不作爲轉義字符。 反斜槓被認爲是該行的部分 。特別是, 反斜槓 - 換行對可能不會用作 作爲續行。

它適用於我的機器。

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

太棒了,謝謝!我覺得沒有找到這個文件的愚蠢,但這是很難搜索的東西之一,因爲這些條款是相當通用的:( – 2009-05-29 04:57:55

+0

順便說一句,你用什麼外殼不需要-r?我是使用bash。 – 2009-05-29 04:59:15