``导致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
执行成功