linux中的eval命令

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

$ cat ./employee.dat
zhoumin [email protected] dev
zhangsan [email protected] 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: [email protected]
job: dev

$ ./info_employee.sh zhangsan
user: zhangsan
email: [email protected]
job: test

猜你喜欢

转载自blog.csdn.net/choumin/article/details/113663499
今日推荐