使用GNU bash 4.1.2,我得到:
[roxma@VM_6_207_centos ~]$ echo `echo '\\'`
\
[roxma@VM_6_207_centos ~]$ echo $(echo '\\')
\\
答案 0 :(得分:2)
差异记录在man bash
:
当使用旧式反引号替换形式时,反斜杠 保留其字面含义,除非后跟$,`或\。该 第一个反引号前面没有反斜杠会终止命令 代换。使用$(命令)表单时,所有字符之间 括号组成命令;没有人受到特别对待。
根据man bash
,如果$
遵循反斜杠,则会发现两种形式之间存在类似差异:
$ echo `echo 'out: \$'`
out: $
$ echo $(echo 'out: \$')
out: \$
如果一个反引号跟随反斜杠,那就相同了:
$ echo `echo 'out: \`'`
out: `
$ echo $(echo 'out: \`')
out: \`
由于在命令替换中将反引号作为字符放置可能很有用,因此反引号表单必须有一种方法来逃避反引号。为了确保一个人可以在任何人想要的地方放置逃脱角色,那么还需要一种方法来逃避逃脱。