LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 819|回复: 7

请问$(cmd)和`cmd`之间有什么区别[已解决]

[复制链接]
发表于 2004-4-14 10:43:04 | 显示全部楼层 |阅读模式
上面那个是反引号
还有,看到有的shell里面出现的{}(就是一对空的大括号)还有“\”是什么意思呢
发表于 2004-4-14 11:07:38 | 显示全部楼层
 楼主| 发表于 2004-4-14 13:02:18 | 显示全部楼层
6.对任何以符号$开头的表达式执行参数(变量)替换

7.对形式$(string)的表达式进行命令替换
这里是嵌套的命令行处理。
还是没有明白$()和``什么区别,望明示,谢谢
 楼主| 发表于 2004-4-14 13:06:43 | 显示全部楼层
eval $(dircolors -b /etc/dircolors)
eval `dircolors -b /etc/dircolors`
或者说上面有什么区别呢
发表于 2004-4-14 13:07:43 | 显示全部楼层
看帖子要细心哦。
注意,尽量避免涉及bash的敏感点。这些弯路是不必要走的。

一些老UNIX用户典型地如C shell用户应该注意,``这个"命令替换"命令是老UNIX机器上的shell语法,bash向后兼容了这种格式,但对它的支持依然含糊。在命令行处理的第7步──命令替换中,bash只对$()支持得好

$(command)的用途是命令替换,执行command后,把它的输出作为字符串返回。
``等价于$(),但前者是UNIX旧语法,不推荐使用。
发表于 2004-4-14 13:11:41 | 显示全部楼层
最初由 qhgary 发表
6.对任何以符号$开头的表达式执行参数(变量)替换

7.对形式$(string)的表达式进行命令替换
这里是嵌套的命令行处理。
还是没有明白$()和``什么区别,望明示,谢谢

简单的说,``,是早期的shell用于变量替换的,而$()是"改良"型的,当使用很多变量嵌套的时候,建议用$(),因为,从要比用``更容易理解和阅读!
举个简单的例子
/home/javalee#a=abc
/home/javalee#b=cde
/home/javalee#c=efg
/home/javalee#d=$(echo $(echo $(echo $a $b $c)))
/home/javalee#echo $d
abc cde efg
/home/javalee#d=`echo `echo `echo $a $b $c``
>^\
/home/javalee#d=`echo `echo `echo $a $b $c```
ksh: abc: not found
 楼主| 发表于 2004-4-14 13:43:54 | 显示全部楼层
先感谢2位热心的朋友

意思就是说最好不要用``,而完全用$()代替是么?
$()能够完全代替``并且功能比``更强大,``的存在仅仅是为了
向后兼容,我这样理解对么?
发表于 2004-4-14 13:48:40 | 显示全部楼层
最初由 qhgary 发表
先感谢2位热心的朋友

意思就是说最好不要用``,而完全用$()代替是么?
$()能够完全代替``并且功能比``更强大,``的存在仅仅是为了
向后兼容,我这样理解对么?

每个人的理解不同,每个人的喜好也不同,当然,$()可以完全替代``
ps:csh里不认$()哟
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表