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

$lsabc$echo$(ls)abc$echo`ls`abc这里的效果好像是一样的,我想问下,这2个命令有什么不同点吗... $ ls
a b c
$ echo $(ls)
a b c
$ echo `ls`
a b c
这里的效果好像是一样的,我想问下,这2个命令有什么不同点吗
展开
 我来答
小米飞猫
2012-10-10 · 专注于IT监控领域技术
小米飞猫
采纳数:1651 获赞数:4811

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

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

不过,$( ) 并不是没有毙端的...
反引号 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。
而 $() 并不见的每一种 shell 都能使用.
追问
如果是多个命令的话我是可以用;隔开的啊,没有必要起多个括号吧。比如
$ { var1=test1;var2=test2;echo $var1>a;echo $var2;}
追答
这些东西比较随意啦...具体的执行逻辑,你可以根据自己的需求和习惯写。
这个没什么固定模式。
白卡PALA
2017-07-11 · 知道合伙人软件行家
白卡PALA
知道合伙人软件行家
采纳数:648 获赞数:3420
性能测试4年工作经验。

向TA提问 私信TA
展开全部
`cmd`是执行里面的shell命令
但是$()有多种用法,$(cmd)只是其中一种用法,效果其实是和`cmd`是一样的。
参考下$()的用法:
${#1} : 第一个参数的长度
${1} : 第一个参数
$(env | grep HOSTNAME) :去圆括号内命令的返回值
${HOSTNAME} : 返回花括号内环境变量的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式