- 时间:2020-05-03 03:10 编辑: 来源: 阅读:
- 扫一扫,手机访问
摘要:Linux下Shell脚本中几种基本命令的替换区别
[b]Part 1 : ` command `[/b]
这是 “命令标准输出作为函数标准输入” 操作方法之一,有很大的弊端以及不安全的地方。
[b]缺点一:[/b]比较陈旧。
[b]缺点二:[/b]容易与单引号混淆。(其实它是你键盘“!”左边那个键)
[b]Part 1.5 ` command``与 $(command) 俩者区别[/b]
直接看几张图吧,看这图解释他们区别...
[img]http://files.jb51.net/file_images/article/201610/2016102584322461.png?201692584357[/img]
大家可以看到俩种表达方式,分别是代表命令直接执行和嵌套执行。
[b]我们发现:[/b]执行[code]`` [/code]和[code] $() [/code]是相同的。
[img]http://files.jb51.net/file_images/article/201610/2016102584413252.png?201692584421[/img]
附,其实这里有个小bug...( 橙色框框 ):即你怎么知道嵌套执行计算机是真的镶嵌执行的呢?
所以我又截图一张...可以看到直接执行的情况下计算机确实是按照从左到右这样执行的。
所以得出证明,嵌套执行计算机是真的镶嵌执行,我们操作是确实有效的!
他们支持多层嵌套,对运维工作有不可言语的巨大作用。
[b]Part 2 : $(command)[/b]
这是 “命令标准输出作为函数标准输入” 操作方法之二,使用这种方法的人也最多!
这种方法的优点是:以[code]$(command)[/code]形式可以互相嵌套多个命令扩展。
[b]Part 3 : ${command}[/b]
[img]http://files.jb51.net/file_images/article/201610/2016102584447634.png?201692584454[/img]
那具体是什么意思呢?简而言之,将变量函数[code]$()[/code]进行替换以[code]\${}[/code]输出
[img]http://files.jb51.net/file_images/article/201610/2016102584510132.png?201692584522[/img]
嗯...意思是到了但是还不正确。。但是我们现在知道俩点关于[code]${}[/code]了
第一点:[code]$() [/code]是用来运行命令的,不是用来运行替换变量的。简而言之,[code]\$()[/code]就是用来执行命令,其他干不了
第二点:[code]${} [/code]是用来替换变量的。但是它不能给你执行变量替换,仅仅能帮[code]\$()[/code]信息读出来。
第三点:[code]echo ${#name} [/code]可以统计替换变量长度单位。
[img]http://files.jb51.net/file_images/article/201610/2016102584534071.png?201692584541[/img]
结论:[code]$()[/code]用来执行;[code]\${}[/code]用来变量替换,但不能执行。
[b]Part 4 : $(){command}[/b]
关于这点,这里就不细说了。
[img]http://files.jb51.net/file_images/article/201610/2016102584555897.png?20169258463[/img]
[b]结论:[/b][code]$(){command}[/code]定义了个方法名叫\$,这个方法执行了[code]command[/code]命令
[b]最后结文:[/b]
[code]` command``[/code]与 [code]$(command) [/code]俩者无区别,都是执行命令。“命令标准输出作为函数标准输入”
[code]\${command} [/code]与[code] $(){command} [/code]俩者类似。前者用来读取变量替换内容,但不能执行。
唔...加一点话。群里的朋友给我提供了一份RHCE的官方手册,上面对“命令标准输出作为函数标准输入”有一个简单的解释,即:命令替换。
命令替换允许命令的输出替换命令本身。当命令包含前导美元符号和括号[code]$(command)[/code]或者反引号 [code]command[/code]时,就会发生命令替换。
[b]总结[/b]
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。