码迷,mamicode.com
首页 > 系统相关 > 详细

shell 将变量当命令执行问题【多条命令同时执行问题】

时间:2015-09-01 18:30:56      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:shell   变量   命令   将变量作为命令执行   

shell将变量当命令执行问题【多条命令同时执行问题】


今天写了个shell脚本,脚本中需要将变量当做shell命令运行,通常的方法有多种,比如:

`${var}` 将变量内容当shell命令行执行

$(${var}) 将变量内容当shell命令执行

${var}将变量内容当shell命令执行【不推荐此种方法】

 

但是这3种方法只能运行单条命令,当命令是下面类型时就会有问题:

VAR1=‘cd /home ;echo "hello";echo "good"‘

VAR2=‘cd /home && echo "hello" && echo "good"‘

此时执行

 

$(${VAR1}) 就会发现没有输出,通过跟踪命令执行过程发现shell自动将 ; && 使用‘‘进行了限制,为了解决这个问题查了很多资料,没有好的解决方法,

通常我们的crontab 命令会有此种写法,而且执行没有问题,通过查看crontab的资料,发现使用的system函数,所以最后使用awk的system函数解决问题。

 

解决方法:

VAR1=‘cd /home ;echo "hello";echo "good"‘

VAR2=‘cd /home && echo "hello" && echo "good"‘

echo ${VAR1}|awk ‘{run=$0;system(run)}‘

echo ${VAR2}|awk ‘{run=$0;system(run)}‘

执行结果正确

   hello

   good

   hello

   good


本文出自 “酷比特Linux” 博客,请务必保留此出处http://coolbyte.blog.51cto.com/8289854/1690549

shell 将变量当命令执行问题【多条命令同时执行问题】

标签:shell   变量   命令   将变量作为命令执行   

原文地址:http://coolbyte.blog.51cto.com/8289854/1690549

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!