shell脚本中的``导致sed命令解析失败

来源:互联网 发布:php在线留言系统 编辑:程序博客网 时间:2024/04/29 04:47

``导致sed命令解析失败,试验如下

试图把单个反斜线替换为两个反斜线,也就是把\替换为\\

$ cat t1.sh
#!/bin/sh
a=`echo 1|sed 's/\\/\\\\/g'`
echo $a

$ ./t1.sh
sed:-e 表达式 #1,字符 8:unterminated `s' command

$ sh -x ./t3.sh
++ echo 1
++ sed 's/\/\\/g'
sed:-e 表达式 #1,字符 8:unterminated `s' command
+ a=
+ echo

应该是反斜线提前被shell解析,传给sed的时候已经变成s/\/\\/g

把``替换为$()的方式就可以了
$ cat t1.sh
#!/bin/sh
a=$(echo 1|sed 's/\\/\\\\/g')
echo $a

$ ./t1.sh
1
执行成功