shell脚本中命令代换:反引号、$()、eval区别

在说eval、反引号以及${}的区别之前,先看看什么是命令代换?

所谓命令代换其实是:shell执行命令并将命令替换部分替换为执行该命令后的结果(先执行该命令,然后用结果代换到命令行中)

而在命令代换方式又分了三种:
1) 反引号(••):就是‘~’处的那个符号,
2) $():
3) eval:

接下来分别看看他们功能和作用:

  1. 反引号(••):就是‘~’处的那个符号,反引号执行命令代换时,会对命令中包含的‘\’进行跳脱处理;
  2. $():相当于C语言当中的();用于算术运算

以下例子说明反引号和$()的区别:
例子1:
这里写图片描述
因为shell里的单引号会保持所有字符的字面值,所以引号里的执行结果应该是 \ ;
但是用反引号输出的结果却是 \ ,这就是由于它对 \ 进行了跳脱处理。

例子2:
这里写图片描述

这里写图片描述
两者执行结果一样,都是执行命令并将命令替换部分替换为执行该命令后的结果;

3、 eval:

1) 功能:告知shell取出eval的参数,重新运算求出参数的内容;
语法形式:eval [参数] —–其中参数不限数目,彼此之间用分号分开。
a) eval可读取一连串的参数,然后再依参数本身的特性来执行。
b) ‘参数’是在终端上键入的一条普通命令行。然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次,再次运算求出参数的内容。

注意:如果变量中包含任何需要shell直接在命令行中看到的字符(不是替换的结果),就可以使用eval。命令行结束符(; | &),I/o重定向符(< >)和引号就属于对shell具有特殊意义的符号,必须直接出现在命令行中。

2).取得最后一个参数

例子1:
这里写图片描述

这里写图片描述

例子2:

这里写图片描述

这里写图片描述

3).以下示意如何用eval命令创建指向变量的“指针”:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ashley zhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值