linux中的eval命令

eval 是 shell 内置命令,它可以将一个变量中包含的字符串扩展成 shell 脚本并执行。当我们通过字符串拼接的方式生成一个 linux 命令时,可以用 eval 来执行它。
假设 employee.dat 文件的每一行描述了一个员工的基本信息,包含三列,分别是:姓名,邮箱,岗位类型,例如:

$ cat ./employee.dat
zhoumin zhoumin@abc.cn dev
zhangsan zhangsan@abc.cn test

则 info_employee.sh 脚本可以根据员工的姓名查看其它信息:

#!/bin/sh

[ -z "$1" ] && echo "Usage: $0 name" && exit -1

file=employee.dat

name=$1
email=-
job=-

eval `cat $file |sed -n -e "/^$name[ ]*\([0-9a-z@.]*\)[ ]*\(.*\)/s//email='\1';job='\2'/p"`

echo "user: $name"
echo "email: $email"
echo "job: $job"

其中,eval 很好的解决了在 sed 中对变量进行赋值的问题,执行效果如下:

$ ./info_employee.sh zhoumin
user: zhoumin
email: zhoumin@abc.cn
job: dev

$ ./info_employee.sh zhangsan
user: zhangsan
email: zhangsan@abc.cn
job: test

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值