美文网首页
Shell将变量当命令执行问题【多条命令同时执行问题】

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

作者: 与我一起成长 | 来源:发表于2021-11-18 19:04 被阅读0次

    来源:https://blog.51cto.com/coolbyte/1690549

    今天写了个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函数,所以最后使用awksystem函数解决问题。

    解决方法:

    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)}'
    

    执行结果正确。

    相关文章

      网友评论

          本文标题:Shell将变量当命令执行问题【多条命令同时执行问题】

          本文链接:https://www.haomeiwen.com/subject/pgkjtrtx.html