36

也许最容易用一个例子来解释:

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

似乎该read命令将输入​​中的反斜杠解释为转义并删除它们。我需要在不更改其内容的情况下逐行处理文件,而且我不确定如何在此处停止读取智能。有任何想法吗?

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

read -r根据http://www.ss64.com/bash/read.html使用:

-r
如果给出此选项,则反斜杠不充当转义字符。

于 2009-05-29T04:48:19.887 回答