shell脚本中的数据传递方式
shell中支持的数据传递方式 主要有那么几种: 变量、管道、结果引用、重定向+文件、以及xargs。
变量方式:
1. 定义变量: 变量名=值
2. 使用变量: $变量名
管道方式:
统计当前文件夹下的文件数量:
find . | awk {print NR}
#打印99乘法表
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'
结果引用:
#kill 某个process
kill -9 `ps | grep navi | awk 'NR==1 {print $1}'`
重定向方式:
简单的: 将当前文件夹下的目录文件信息写入dir.log
ls -l > dir.log
复杂的:将make输出写入make.log文件
make -j8 > make.log 2>&1
shell中的2 和 1 分别代表 错误输出 和 标准输出, 0 代表 标准输入。 而&类同与C语言中的取地址,上述中代表错误输出2也重定向到标准输出1的设备上。
如果你既想将输出结果重定向到文件,同时也想看到脚本命令运行过程, 那么你可以使用tee命令。
tee命令接收管道传递过来的信息,将其保存到文件,同时也在屏幕上输出。
#verbose output ; save output to iostat_1_10.log
iostat 1 10 | tee iostat_1_10.log
xargs:
1. xargs是一个以空格分解字符串,并以分解后的字符串作为其后的命令的参数,并逐一启动其后的cmd执行。
2. 它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题.
3. xargs的作用一般等同于大多数Unix shell中的反引号,但更加灵活易用,并可以正确处理输入中有空格等特殊字符的情况。对于经常产生大量输出的命令如find、locate和grep来说非常有用。
例如: 你有一个文件包含了很多你希望下载的URL, 你能够使用xargs 下载所有链接
cat url-list.txt | xargs wget –c
再如:
find /path -type f -exec rm '{}' \;
可以替换为:
find /path -type f -print0 | xargs -0 rm
后者速度更快。
出处: http://www.cnblogs.com/todototry/
关注语言: python、javascript(node.js)、objective-C、java、R、C++
兴趣点: 互联网、大数据技术、大数据IO瓶颈、col-oriented DB、Key-Value DB、数据挖掘、模式识别、deep learning、开发与成本管理
产品: 猪哥网,猪场管理软件,畜牧行业
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
shell脚本中的数据传递方式的更多相关文章
- shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中
shell编程系列24--shell操作数据库实战之利用shell脚本将文本数据导入到mysql中 利用shell脚本将文本数据导入到mysql中 需求1:处理文本中的数据,将文本中的数据插入到mys ...
- shell脚本中向hive动态分区插入数据
在hive上建表与普通分区表创建方法一样: CREATE TABLE `dwa_m_user_association_circle`( `device_number` string, `oppo_nu ...
- Shell脚本中执行mysql的几种方式(转)
Shell脚本中执行mysql的几种方式(转) 对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用 ...
- Shell脚本中执行sql语句操作mysql
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的 ...
- [转帖]Shell脚本中的break continue exit return
Shell脚本中的break continue exit return 转自:http://www.cnblogs.com/guosj/p/4571239.html break结束并退出循环 cont ...
- 数组-在Shell脚本中的基本使用介绍
Shell脚本在运维工作中是极其重要的,而数组在shell脚本里的运用无论是在循环或运算方面都是非常实用的一个环节.下面是对shell脚本中数组方面一些操作在此进行记录,希望能帮助到有兴趣的朋友~1. ...
- shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量
7月11日任务 20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法20.4 shell脚本中的变量 20.1 shell脚本介绍 1.shell脚本语言是linu ...
- Shell脚本中的while getopts用法小结
getpots是Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数.getopts被Shell程序用来分析位置参数,option包含需要被识别的选项字符,如果这里的字符后 ...
- 利用 tee 命令调试shell脚本中的管道
在编写shell脚本时,调试是个比较麻烦的事,特别是涉及到多层管道命令的时候,会产生多个中间结果,tee命令的作用是从标准输入中读取数据写入标准输出或文件中,利用它可以从管道中读取中间结果并写入本地临 ...
随机推荐
- Chrome Inspect调试stetho出现空白的解决方法
stetho可以使用chrome调试webview,有网友反映国内不行,亲测了一下是有解决方法的: Chrome://inspect 打开后会发现stetho的页面: 点击inspect,如果没有Fa ...
- centos7下rsync+crontab定期同步备份
最近需求想定期备份内部重要的服务器数据到存储里面,顺便做个笔记 以前整过一个win下的cwrsync(客户端)+rsync(服务端:存储)的bat脚本 这次整一个Linux下的脚本sh,执行定期自动备 ...
- 安全之路 —— C++实现进程守护
简介 所谓进程守护,就是A进程为了保护自己不被结束,创建了一个守护线程来保护自己,一旦被结束进程,便重新启动.进程守护的方法多被应用于恶意软件,是一个保护自己进程的一个简单方式,在ring3下即可轻松 ...
- January 08th, 2018 Week 02nd Monday
To be yourself in a world that is constantly trying to make you something else is the greatest accom ...
- Java设计模式之一 ----- 单例模式
什么是单例模式 保证一个系统中的某个类只有一个实例而且该实例易于外界访问.例如Windows界面的任务管理器就可以看做是一个单例. 单例模式的使用场景 需要频繁的进行创建和销毁的对象: 创建对象时耗时 ...
- golang的定时任务
golang的定时任务使用的是cron这个包来解决的 官方文档地址:https://godoc.org/github.com/robfig/cron cron包的基础知识 字段名 是否必须 允许的值 ...
- Pycharm 安装 idea VIM
直接在线安装 1.File->Settings->Plugins->Install JetBrains Plugins 2.点击install安装ideavim 3.也许需要的切换v ...
- LCA树链剖分
LCA(Lowest Common Ancestor 最近公共祖先)定义如下:在一棵树中两个节点的LCA为这两个节点所有的公共祖先中深度最大的节点. 比如这棵树 结点5和6的LCA是2,12和7的LC ...
- 用户输入序号选择商品,按q退出
输出商品列表,用户输入序号,显示用户选中的商品 li = ['手机','电脑','鼠标垫','游艇'] while 1: li = ['手机','电脑','鼠标垫','游艇'] for i in li ...
- sparse 稀疏函数的用法2
sparse函数 功能:Create sparse matrix-创建稀疏矩阵 用法1:S=sparse(X)——将矩阵X转化为稀疏矩阵的形式,即矩阵X中任何零元素去除,非零元素及其下标(索引)组成矩 ...