$(cmd)和符号`cmd`意思相近,有各自缺点

shell中命令替换$(cmd)和符号`cmd`有什么区别吗? 5

$ ls 
a b c 
$ echo $(ls) 
a b c 
$ echo `ls` 
a b c
这里的效果好像是一样的,我想问下,这2个命令有什么不同点吗
2002412229  |  浏览 3688 次  |举报
我有更好的答案

1条回答

1, 反引号很容易与单引号搞混乱,对初学者来说。有时在一些奇怪的字形显示中,两种符号是一模一样的(直竖两点)。用$()可以更好的避免这种混乱

2, 在多层次的复合替换中,反引号须要额外的跳脱( /` )处理,而 $( ) 则比较直观。例如:
`com1`com2`` 你这么写就是错的。需要`com1/`com2/``如果有多个命令嵌套就比较复杂了。而用$()就比较直观比如$(com1$(com2$(com3))) 

不过,$( ) 并不是没有毙端的...
反引号 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。
而 $() 并不见的每一种 shell 都能使用.
追问
如果是多个命令的话我是可以用;隔开的啊,没有必要起多个括号吧。比如
$ { var1=test1;var2=test2;echo $var1>a;echo $var2;}
追答
这些东西比较随意啦...具体的执行逻辑,你可以根据自己的需求和习惯写。
这个没什么固定模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值