知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

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

发布时间:2014-09-05 14:37:56作者:知识屋

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
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜