|
发表于 2006-3-15 18:32:36
|
显示全部楼层
总算彻底想通了,呵呵
`command`格式中,“\”被shell处理为转义字符(如果后跟特殊含义字符$,\,`的话),因此`echo \$x`的结果相当于直接在命令行中输入echo $x并回车得到的结果,于是执行echo `echo \$x`得到结果为a(变量x的值)
而$(command)格式中,“\”被shell处理为普通字符,因此$(echo \$x)的结果相当于直接在命令行中输入echo \$x并回车得到的结果,于是执行echo $(echo \$x)得到结果为$x
我觉得命令替换可以理解为将要替换的命令传递给一个子shell执行,然后将得到的结果返回到被替换命令的位置继续执行父shell里的命令。`echo \$x`中,被传递给子shell的实际是echo $x;而$(echo \$x)中被传递给子shell的就是echo \$x |
|