shell中eval的用法

eval命令首先扫描命令行变量,然后执行置换出来的参数。eval的作用对象是那些一次扫描无法实现其功能的变量。eval对复杂变量进行两次扫描。eval命令也可以用于回显简单变量。

  • eval用于回显简单变量

格式如下:

eval cmd

其中的cmd是一条普通命令。然而,当在cmd前面放上eval时,在执行cmd之前,eval扫描cmd两次。

#!/bin/bash

NAME=VALUEBANK
echo $NAME

eval echo $NAME

# 输出
# VALUEBANK
# VALUEBANK

eval第1次扫描命令行时,它替换出普通变量NAME的值VALUEBANK,接着eval再次扫描命令行,这时shell执行echo VALUEBANK

  • eval用于执行字符串变量(变量是字符串类型)

首先,我们创建一个名为run的文件,在这个文件中含有一些命令。

lswc -l

接着,使用cat run读取run的内容,赋给变量myfile,现在我们查看是否可以执行上述命令。

#!/bin/bash

myfile=`cat run`

eval "${myfile}"

从上面的结果可以看出,第一次扫描进行了变量置换,第二次扫描执行了字符串中所包含的命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值