Shell sh read命令在输入中使用反斜杠?

Shell sh read命令在输入中使用反斜杠?,shell,sh,backslash,Shell,Sh,Backslash,也许用一个例子最容易解释: $ echo '\&|' \&| $ echo '\&|' | while read in; do echo "$in"; done &| 似乎read命令正在将输入中的反斜杠解释为转义,并将其删除。我需要一行一行地处理一个文件而不改变它的内容,我不知道如何停止读取。有什么想法吗?根据: -r 如果指定了此选项,反斜杠将不作为转义字符。 反斜杠被视为一部分 排队等候。特别是 不能使用反斜杠换行符对 作为行的延续 它

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

$ echo '\&|'
\&|
$ echo '\&|' | while read in; do echo "$in"; done
&|
似乎
read
命令正在将输入中的反斜杠解释为转义,并将其删除。我需要一行一行地处理一个文件而不改变它的内容,我不知道如何停止读取。有什么想法吗?

根据:

-r
如果指定了此选项,反斜杠将不作为转义字符。 反斜杠被视为一部分 排队等候。特别是 不能使用反斜杠换行符对 作为行的延续

它在我的机器上工作

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

使用
read-r
,如下所示:

-r
如果指定了此选项,反斜杠将不作为转义字符


太棒了,谢谢!我觉得没有找到这方面的文档很傻,但这是很难搜索到的东西之一,因为这些术语相当通用:(顺便说一句,您使用的哪个shell不需要-r?我使用的是bash。请注意,这对于zsh上的read来说并不完全正确:。区别:-r只要在行尾打印“\”。因此
read-r in&&echo$in
如果您输入
foo\nbar
谢谢Alex,我只能将其中一行标记为an。)斯瓦尔和斯索尔特只差一分钟就击败了你:)嘿,我知道,对于大多数问题来说,100米赛跑也是如此