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

后者速度更快。

本文转自博客园知识天地的博客,原文链接:shell脚本中的数据传递方式,如需转载请自行联系原博主。

相关文章
|
3天前
|
分布式计算 Hadoop Shell
使用shell脚本实现自动SSH互信功能
使用shell脚本实现自动SSH互信功能
10 1
|
3天前
|
Unix Shell Linux
轻松编写 AIX Shell 脚本
轻松编写 AIX Shell 脚本
11 1
|
4天前
|
监控 关系型数据库 Shell
Shell脚本入门:从基础到实践,轻松掌握Shell编程
Shell脚本入门:从基础到实践,轻松掌握Shell编程
|
4天前
|
关系型数据库 MySQL Shell
在Centos7中利用Shell脚本:实现MySQL的数据备份
在Centos7中利用Shell脚本:实现MySQL的数据备份
|
6天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
24 5
|
6天前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
6天前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)
|
7天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
15 3
|
13天前
|
弹性计算 运维 监控
|
13天前
|
存储 弹性计算 运维
自动化收集员工信息的Shell脚本
【4月更文挑战第30天】
11 0