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个命令有什么不同点吗 展开
a b c
$ echo $(ls)
a b c
$ echo `ls`
a b c
这里的效果好像是一样的,我想问下,这2个命令有什么不同点吗 展开
2个回答
展开全部
1, 反引号很容易与单引号搞混乱,对初学者来说。有时在一些奇怪的字形显示中,两种符号是一模一样的(直竖两点)。用$()可以更好的避免这种混乱
2, 在多层次的复合替换中,反引号须要额外的跳脱( /` )处理,而 $( ) 则比较直观。例如:
`com1`com2`` 你这么写就是错的。需要`com1/`com2/``如果有多个命令嵌套就比较复杂了。而用$()就比较直观比如$(com1$(com2$(com3)))
不过,$( ) 并不是没有毙端的...
反引号 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。
而 $() 并不见的每一种 shell 都能使用.
2, 在多层次的复合替换中,反引号须要额外的跳脱( /` )处理,而 $( ) 则比较直观。例如:
`com1`com2`` 你这么写就是错的。需要`com1/`com2/``如果有多个命令嵌套就比较复杂了。而用$()就比较直观比如$(com1$(com2$(com3)))
不过,$( ) 并不是没有毙端的...
反引号 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。
而 $() 并不见的每一种 shell 都能使用.
追问
如果是多个命令的话我是可以用;隔开的啊,没有必要起多个括号吧。比如
$ { var1=test1;var2=test2;echo $var1>a;echo $var2;}
追答
这些东西比较随意啦...具体的执行逻辑,你可以根据自己的需求和习惯写。
这个没什么固定模式。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询