我试图在变量中保留sed替换的返回值:
D=domain.com
echo $D | sed 's/\./\\./g'
正确退货:域\ .com
D1=`echo $D | sed 's/\./\\./g'`
echo $D1
返回: domain.com
我做错了什么?
答案 0 :(得分:9)
D2=`echo $D | sed 's/\./\\\\./g'` echo $D2
想想每次执行时重新扫描行的shell。因此echo $ D1具有其中的转义,在回显它之前,在解析行时将转义应用于该值。解决方案是更多的逃脱。
在嵌套的shell语句中获取正确的转义可以让你在有趣的时间生活。
答案 1 :(得分:2)
反引号运算符用反斜杠替换转义的反斜杠。你需要逃脱两次:
D1=`echo $D | sed 's/\./\\\\./g'`
如果愿意,您也可以逃避第一个反斜杠。