变量中如何转义反斜杠

3

我正在使用sed命令替换文件中的URL,当URL包含反斜杠“\”时会出现一些小问题,但其他情况下都可以正常工作。

例如URL:http**://www.example.com/simi/icr

# variables
ICR_KEY=somekey
ICR_KEY_VAL="http\://www.example.com/simi/icr"
sed "s!${ICR_KEY}=.*!${ICR_KEY}=${ICR_KEY_VAL}!" properties > tmp

这将替换URL,但输出的内容不包含变量值中的反斜杠。


请告诉我,为什么URL包含反斜杠? - Ignacio Vazquez-Abrams
这个URL被传递给一个驻留在Oracle中的Java过程,这就是我所知道的... :) - sid
1个回答

1

无论是bash还是sed,都将反斜杠解释为转义字符。在bash中使用单引号来防止这种情况发生,在sed中则需要双倍反斜杠:

ICR_KEY_VAL='http\\://www.example.com/simi/icr'

太棒了,我尝试过双反斜杠和天知道什么,但从未尝试过单引号。非常感谢!! - sid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接