当前位置: 技术问答>linux和unix
倒引号的嵌套使用
来源: 互联网 发布时间:2017-01-18
本文导语: 我知道这是一个很初级的问题,但由于我是一个菜鸟,请各位达人耐心解释. 有下面两句话: 语句1: abc=`echo the current path is `pwd`` 语句2: echo $abc 以上这两句话的原意是显示:"the current path is..." 其中...部分为当前...
我知道这是一个很初级的问题,但由于我是一个菜鸟,请各位达人耐心解释.
有下面两句话:
语句1: abc=`echo the current path is `pwd``
语句2: echo $abc
以上这两句话的原意是显示:"the current path is..." 其中...部分为当前路径.
但实际显示的是"the current path ispwd" 即`pwd`命令没有被执行,字符串pwd被原样显示.
我知道这句话应该在里面的倒引号前加转义字符才是正确的(因为从书上看到的).
但我不理解,
因为我觉得加上转义字符后,倒引号就失去作用,变成普通字符了,
可结果与我想的恰恰相反,加了转义字符后,倒引号能发挥作用;而不加的话反而是错误的.
所以请各位达人解释一下以上这种写法,
也就是不加转义字符时,
系统是如何处理的.
谢谢!!!
有下面两句话:
语句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命令的时候才去解释倒引号,因此得到了正确的当前路径。
一对倒引号表示里面的是一个命令。加上转义之后那对倒引号还作为倒引号保留着作为echo命令中的一部分,在执行echo命令的时候才去解释倒引号,因此得到了正确的当前路径。