命令代换‘’和$()和eval命令

一、基本概念

         由反引号括起来的也是一条命令,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命令给每个值一个变量名


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值