命令代换
基本概念
命令代换的基本思想是,先执行指定的内部指令,然后将其结果替换出来,重新组成新的命令行。
两种命令代换的格式
(1) 反引号 ``
#!/bin/bash DATE=`date` echo $DATE
(2) $()
#!/bin/bash FILE=$(ls) echo $FILE
两者的区别和联系
1、反引号适用于所有Unix系统,但是$()只有一部分系统支持。前者的可移植性要好
2、反引号容易和单引号进行混淆,$()则清晰明了,一清二楚
3、反引号对反斜杠 '\' 进行跳脱处理,而$()不会
相关的eval指令
功能
告知shell取出eval的参数,重新运算求出参数的内容。
语法
eval [参数]
补充
eval可读取一连串的参数,然后再依参数本身的特性来执行。
参数
参数不限数目,彼此之间用分号分开。
eval执行命令行前扫描两次,再次运算求出参数内容,eval是对Bash Shell命令行处理规则的灵活应用,进而构造”智能”命令实现复杂的功能。
练习
由于单引号会保持其内容字面值,所以echo打出来的就是字符串${a}
当加了命令eval后,a的值就被打出来了
这就后面,它会扫描两次,然后求出参数的内容