sh read命令在输入中吃掉斜杠?

Jer*_*amp 25 scripting sh backslash

也许最简单的解释一个例子:

$ echo '\&|'
\&|
$ echo '\&|' | while read in; do echo "$in"; done
&|
Run Code Online (Sandbox Code Playgroud)

似乎"read"命令将输入​​中的斜杠解释为转义并将其删除.我需要逐行处理文件而不改变其内容,我不知道如何在这里停止阅读.有任何想法吗?

Zso*_*kai 39

收件人:http://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html:

-r
如果给出此选项,则反斜杠不会充当转义字符.反斜杠被认为是该行的一部分.特别是,反斜杠 - 换行符对不能用作行继续.

它适用于我的机器.

$ echo '\&|' | while read -r in; do echo "$in"; done
\&|
Run Code Online (Sandbox Code Playgroud)


Ale*_*lli 6

使用read -r,按http://www.ss64.com/bash/read.html:

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