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

时间:2009-05-29 04:30:05

标签: scripting sh backslash

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

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

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

2 个答案:

答案 0 :(得分:37)

评论:http://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html

  

-r
  如果给出此选项,则反斜杠不会充当转义字符。   反斜杠被认为是一部分   这条线。特别是,a   可能不会使用反斜杠换行符对   作为一个延续线。

它适用于我的机器。

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

答案 1 :(得分:6)

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

  

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