DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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

posted on   DoubleLi  阅读(788)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2018-11-06 windows下网络丢包模拟软件(Network Emulator for Windows Toolkit)
2017-11-06 使用boost的deadline_timer实现一个异步定时器
2017-11-06 C++11 lambda 表达式解析
2017-11-06 C++11使用emplace_back代替push_back
2013-11-06 解决窗口刷新闪烁
2013-11-06 在 Visual C++ 中开发自定义的绘图控件
2013-11-06 客户区也能移动整个窗口实现
点击右上角即可分享
微信分享提示