sh read 命令会吃掉输入中的反斜杠吗?

发布于 2024-07-22 14:10:36 字数 214 浏览 15 评论 0原文

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

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

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

Perhaps easiest to explain with an example:

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

It seems that the read command is interpreting the backslashes in the input as escapes and is removing them. I need to process a file line by line without changing its contents and I'm not sure how to stop read from being smart here. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

烂人 2024-07-29 14:10:36

根据:http://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html< /a>:

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

它可以在我的机器上运行。

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

Accrding to: http://www.vias.org/linux-knowhow/bbg_sect_08_02_01.html :

-r
If this option is given, backslash does not act as an escape character.
The backslash is considered to be part
of the line. In particular, a
backslash-newline pair may not be used
as a line continuation.

It works on my machine.

$ echo '\&|' | while read -r in; do echo "$in"; done
\&|
深空失忆 2024-07-29 14:10:36

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

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

Use read -r, as per http://www.ss64.com/bash/read.html:

-r
If this option is given, backslash does not act as an escape character.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文