日期:2014-05-16  浏览次数:20799 次

倒引号的嵌套使用
我知道这是一个很初级的问题,但由于我是一个菜鸟,请各位达人耐心解释.

有下面两句话:
语句1: abc=`echo the current path is `pwd``

语句2: echo $abc

以上这两句话的原意是显示:"the current path is..." 其中...部分为当前路径.

但实际显示的是"the current path ispwd" 即`pwd`命令没有被执行,字符串pwd被原样显示.

我知道这句话应该在里面的倒引号前加转义字符\才是正确的(因为从书上看到的).
但我不理解,
因为我觉得加上转义字符\后,倒引号就失去作用,变成普通字符了,
可结果与我想的恰恰相反,加了转义字符\后,倒引号能发挥作用;而不加的话反而是错误的.


所以请各位达人解释一下以上这种写法,
也就是不加转义字符\时,
系统是如何处理的.
谢谢!!!



------解决方案--------------------
倒引号不要嵌套使用。你这样用的时候shell不认为是嵌套,而是认为你要执行的是把`echo the current path is `命令的执行结果字符串后面连上pwd再连上``这个空命令的结果字符串赋值给变量abc,所以结果是the current path ispwd。
一对倒引号表示里面的是一个命令。加上转义之后那对倒引号还作为倒引号保留着作为echo命令中的一部分,在执行echo命令的时候才去解释倒引号,因此得到了正确的当前路径。