awk中使用的shell命令,有2种方法:
一。使用system()
二。使用print cmd | “/bin/bash”
http://www.gnu.org/software/gawk/manual/gawk.html#I_002fO-Functions

一。使用所以system()
awk程序中我们可以使用system() 函数去调用shell命令

如:awk 'BEGIN{system("echo abc")}' file
echo abc 就会做为“命令行”,由shell来执行,所以我们会得到以下结果:

root@ubuntu:~# awk 'BEGIN{system("echo abc")}'
abc
root@ubuntu:~#

root@ubuntu:~# awk 'BEGIN{v1="echo";v2="abc";system(v1" "v2)}'
abc
root@ubuntu:~#

root@ubuntu:~# awk 'BEGIN{v1="echo";v2="abc";system(v1 v2)}'
/bin/sh: echoabc: command not found
root@ubuntu:~#

root@ubuntu:~# awk 'BEGIN{v1=echo;v2=abc;system(v1" "v2)}'
root@ubuntu:~#

从上面的例子,我们简单的分析一下awk是怎样调用system的:
如果system()括号里面的参数没有加上双引号的话,awk认为它是一个变量,它会从awk的变量里面把它们先置换为常量,然后再回传给shell

如果system()括号里面的参数有加上双引号的话,那么awk就直接把引号里面的内容回传给shell,作为shell的“命令行”

二。使用print cmd | “/bin/bash”
root@ubuntu:~# awk 'BEGIN{print "echo","abc"| "/bin/bash"}'
abc
root@ubuntu:~#

root@ubuntu:~# awk 'BEGIN{print "echo","abc",";","echo","123"| "/bin/bash"}'
abc
123
root@ubuntu:~#

三。总结
无论使用system()还是print cmd | “/bin/bash”
awk都是新开一个shell,在相应的cmdline参数送回给shell,所以要注意当前shell变量与新开shell变量问题

1.1
root@ubuntu:~# abc=12345567890
root@ubuntu:~# awk 'BEGIN{system("echo $abc")}'

root@ubuntu:~#

1.2
root@ubuntu:~# export abc=12345567890
root@ubuntu:~# awk 'BEGIN{system("echo $abc")}'
12345567890
root@ubuntu:~#

2.1
root@ubuntu:~# abc=1234567890
root@ubuntu:~# awk 'BEGIN{print "echo","$abc"| "/bin/bash"}'

root@ubuntu:~#

2.2
root@ubuntu:~# export abc=1234567890
root@ubuntu:~# awk 'BEGIN{print "echo","$abc"| "/bin/bash"}'
1234567890
root@ubuntu:~#

以上例子,没有export的话,那些变量都是只存在于当前shell变量中,所以都是echo不出来的 ,
而使用了 export的都是环境变量,所以awk调用新的shell时候,可以echo出来

awk命令中执行多条shell命令相关推荐

  1. pythonsubprocess执行多条shell命令_python中subprocess批量执行linux命令

    可以执行shell命令的相关模块和函数有: os.system os.spawn os.popen --废弃 popen --废弃 commands --废弃,3.x中被移除 以上执行shell命令的 ...

  2. php exec执行多条命令,小技巧:在PHP中调用多条shell指令

    原标题:小技巧:在PHP中调用多条shell指令 有时候,在持续集成的过程中,需要通过网页在目标服务器上执行shell指令,今天就列举一个实例进行讲解. 比如,我们需要能通过网页将SVN update ...

  3. java解析shell命令_Android中执行java命令的方法及java代码执行并解析shell命令

    这篇文章给大家介绍Android中执行java命令的方法及java代码执行并解析shell命令,需要的朋友一起学习 android中执行java命令的方法大家都晓得吗,下面一段内容给大家带来了具体解析 ...

  4. 分享平时工作中那些给力的shell命令(更新版)

    分享平时工作中那些给力的shell命令(更新版) 分享平时工作中那些给力的shell命令---(Notice: 蓝色部分为在网友孤风颠影基础上新增加内容) 原帖地址为:http://yunhaozou ...

  5. 分享平时工作中那些给力的shell命令

    标签:基础 工作 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://255361.blog.51cto.com/245361/836 ...

  6. python执行shell命令查看输出_python 运行 shell 命令并捕获输出_python_酷徒编程知识库...

    这个问题的答案取决于你使用的python 版本. 最简单的方法是使用 subprocess.check_output 函数:>>> subprocess.check_output([ ...

  7. 如何使用 Java 中执行 Windows 的 CMD 命令

    如何使用 Java 中执行 Windows 的 CMD 命令 核心代码 完整代码   在 CMD 中执行 BAT 脚本对用户不友好,而且有安全隐患,因此笔者编写了一些可以在 Java 中执行 Wind ...

  8. c mysql并行多条sql_Linux上使用C语言执行多条SQL命令访问MYSQL数据库的有关问题...

    Linux下使用c语言执行多条SQL命令访问mysql数据库的问题 Linux(Ubuntu10.04)系统,MYSQL5.1数据库,C语言! 数据库中有两张表:表A.B! 使用C语言从表A中查询数据 ...

  9. sharpssh远程linux监控系统,利用SharpSsh远程执行linux的shell命令

    利用SharpSsh远程执行linux的shell命令 (2011-07-26 14:38:02) SharpSSH是一个C#的开源项目,可以利用SSH连接linux系统.并执行shell等命令. 而 ...

最新文章

  1. PyTorch实现L2和L1正则化的方法 | CSDN博文精选
  2. 总也学不会Linux命令行?这本新书大概率能拯救你!
  3. verilog编译指令
  4. 全球及中国血铅检测服务行业应用动态及未来产销需求预测报告2022版
  5. python代码300行程序_Python:游戏:300行代码实现俄罗斯方块
  6. TransactionScope 分布式事务
  7. 深入理解JavaScript系列(32):设计模式之观察者模式
  8. 用doxygen自动生成文档
  9. TensorFlow 保存和加载模型
  10. ssis 执行任务的日志_SSIS和PowerShell –执行流程任务
  11. eclipse 常用设置(二)
  12. 【智力题】拿硬币(数数字)、游戏
  13. android camera预览帧,android camera2处理每一帧并显示其预览
  14. docker给php装swoole,制作php+swoole的Docker环境
  15. Active Directory攻防实验室环境搭建教程(一)
  16. 前端通信实现l聊天室
  17. 13.包装类和字符串
  18. Hudi-集成Flink(Flink操作hudi表)
  19. 同时复制保存微商相册多个商品的图片及描述
  20. opencv + face_recognition —— 人脸识别案例

热门文章

  1. java控制台输入的数据存放在数据库表中_JDBC完成修改(使用控制台输入)
  2. 扫掠两条引导线_NX10 入门图文教程——异形台架(扫掠或者沿引导线扫掠)
  3. python数据分析要学什么_python数据分析学什么?python数据分析入门
  4. 华师大数据科学考研_2020年华东师范大学行政管理专业考研报录比、参考书目、考研经验分享...
  5. ios手机怎么连接adb命令_手机蓝牙怎么连接汽车蓝牙放音乐,车载蓝牙播放器怎么用...
  6. css中的margin和padding
  7. Java CSV文件读取、写入及追加
  8. 红警2Linux版本
  9. vcenter用到java吗_Vijava 学习笔记之 VCenter连接
  10. linux 启动nacos报错_nacos在Linux上的搭建启动报错