Linux eval的用法

功能说明:告知shell取出eval的参数,重新运算求出参数的内容。
语  法:eval [参数]
补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行。
参  数:参数不限数目,彼此之间用分号分开。

1.执行命令行之前扫描它两次,再次运算求出参数的内容。

代码如下:

[root@localhost blue]# a="ls |more"
[root@localhost blue]# $a                                           

其中:
ls 将 | 和 more 看成了参数,而不是将文件按页显示,所以报错:

ls: cannot access |more: No such file or directory

利用eval既可以看出来:

 

[root@localhost blue]# eval $a

ls会取出其参数并再次执行它们

1
1.cpp
2
2.cpp
3
3.cpp

同样的道理:

[root@localhost test]# a="123"
[root@localhost test]# echo '${'"a"'}'                        
${a}
[root@localhost test]# eval echo '${'"a"'}' 
123

#再次执行${a}命令会得到结果:
123 


2.eval取得最后一个参数

代码如下:

[root@localhost blue]# echo 'eval echo \$$#' > last
[root@localhost blue]# cat last
eval echo \$$#
[root@localhost blue]# ./last 1 2 3 4
4

 

eval是对Bash Shell命令行处理规则的灵活应用,进而构造"智能"命令实现复杂的功能。
上面提及的命令是eval其中一个很普通的应用,它重复了1次命令行参数传递过程,纯粹地执行命令的命令。
其实它是bash的难点,是高级bash程序员的必修之技。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值