命令替换,bash编程的核心技术点之一,通过命令替换我们可以获取任何命令的标准输出,以此做进行更复杂的业务逻辑
概念命令替换,也称作子命令替换,可以获取到命令的标准输出
2种方式1、反引号
temp=`date` echo $temp
2、$()
temp=$(date) echo $temp
两种方式均为命令替换的标准语法,反引号是之前的语法规范,$()则是后来新增加的规范,按照技术至上的原则,我觉得使用哪种方式都可以,但是$()可以有更复杂的用法,继续往下看!
``与$()的区别$()方式的能力更强,它支持嵌套语法,而反引号``方式不支持嵌套,举个例子
temp=$(seq $(ls -1 | wc -l)) echo $temp
seq命令会根据传送给它的参数,返回从1开始的序列,$()支持嵌套,所以在$()内部的$()将先执行
命令替换嵌套的执行过程temp=$(seq $(ls -1 | wc -l)) echo $temp
等价于
num=$(ls -l | wc -l) temp=$(seq $num) echo $temp
嵌套在内部的命令替换会先执行,执行完毕后,才是外部的命令替换
总结1、命令替换,可以执行,并且获取标准输出,无法获取标准错误
2、命令替换由bash解释器程序先执行的,所以我们可以根据需将其放置在命令行的任意位置
3、记住这句话:bash先执行命令替换,然后才会执行命令(同变量替换一样)



