为什么这个单引号字符串在命令替换中被解释

时间:2016-06-13 11:42:48

标签: shell sh

比较这两行shell脚本:

printf '%s' 's/./\\&/g'                    #1, s/./\\&/g
printf '%s' `printf '%s' 's/./\\&/g'`      #2, s/./\&/g

我的问题是:为什么单引号的双反斜杠被解释为第二行脚本的单个反斜杠?

1 个答案:

答案 0 :(得分:2)

开始
printf '%s' `printf '%s' 's/./\\&/g'`

反引号内的表达式返回s/./\\&/g,就像在第一个表达式中一样,没有单引号,所以你得到了

printf '%s' s/./\\&/g

第一个反斜杠会转义第二个反斜杠,因此会打印s/./\&/g