一、基本概念
由反引号括起来的也是一条命令,Shell先执行该命令,然后将输出结果立即带环岛当前命令行中。
$DATE='data'
$echo $DATA
例如定义一个变量存放data命令的输出
命令代换也可以用$()表示:DATA=$(data)
测试代码:
#!/bin/bash
2
3 DATE1=`date1`
4 DATE2=(date2)
5 echo $DATE1
6 echo $DATE2
运行结果:
二、两者区别
1、$()看起来比较简洁,而``很容易和‘’进行混淆
2、在多层替代中‘’需要进行转义,比较麻烦
3、``的移植性更强,因为$()不保证所有Linux系统都支持
三、eval命令
eval命令首先扫描命令行进行所有的置换,然后再执行命令。该命令适合与一次扫描无法实现其功能的变量,即该命令对变量进行两次扫描。eval命令也可以
用于回显简单变量,不一定是复杂变量。
1、eval命令用于回显简单便量
2、eval命令用于执行含字符串命令
eval第一次扫描进行了变量置换,第二次扫描了该字符串中所有包含的命令。
3、eval命令显示出传递给脚本的最后一个参数
eval命令首先把$$#解析成当前Shell的参数个数,然后再第二次扫描得出最后一个参数
4、eval命令给每个值一个变量名