比较这两行shell脚本:
printf '%s' 's/./\\&/g' #1, s/./\\&/g
printf '%s' `printf '%s' 's/./\\&/g'` #2, s/./\&/g
我的问题是:为什么单引号的双反斜杠被解释为第二行脚本的单个反斜杠?
答案 0 :(得分:2)
从
开始printf '%s' `printf '%s' 's/./\\&/g'`
反引号内的表达式返回s/./\\&/g
,就像在第一个表达式中一样,没有单引号,所以你得到了
printf '%s' s/./\\&/g
第一个反斜杠会转义第二个反斜杠,因此会打印s/./\&/g
。