【发布时间】:2016-06-13 23:53:26
【问题描述】:
比较这两行shell脚本:
printf '%s' 's/./\\&/g' #1, s/./\\&/g
printf '%s' `printf '%s' 's/./\\&/g'` #2, s/./\&/g
我的问题是:为什么单引号双反斜杠被解释为第二行脚本的单个反斜杠?
【问题讨论】:
比较这两行shell脚本:
printf '%s' 's/./\\&/g' #1, s/./\\&/g
printf '%s' `printf '%s' 's/./\\&/g'` #2, s/./\&/g
我的问题是:为什么单引号双反斜杠被解释为第二行脚本的单个反斜杠?
【问题讨论】:
从
printf '%s' `printf '%s' 's/./\\&/g'`
反引号内的表达式返回s/./\\&/g,与第一个表达式一样,没有单引号,所以你得到
printf '%s' s/./\\&/g
第一个反斜杠转义第二个反斜杠,因此它打印s/./\&/g。
【讨论】: