2009-05-29 40 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