首页 > 系统服务 > 详细

【shell】xargs用法说明

时间:2020-02-10 23:55:23      阅读:121      评论:0      收藏:0      [点我收藏+]

1.xargs简介

在我们日常使用Linux的过程中,经常使用到管道命令,类似ps -ef |grep java,该命令是查看Java进程的命令,其原理就是:将一个命令的标准输出(stdout)重新定向到另外一个命令的标准输入(stdin)。
但是,有时候我们有些特殊的操作,例如需要获取text.txt文件的绝对路径:ls `pwd`/text.txt,这种使用反引号执行命令的方式是最简单的。但是还有另外一种方法,那就是:pwd | xargs -I {} ls {}/test.txt,这是一个简单的实用案例。

xargs的工作原理:该命令接收来自stdin的输入,并将其解析为单个元素,然后调用指令并将这些元素作为该命令的参数。xargs默认使用空白字符分割输入并执行/bin/echo

现有test.txt的文本内容如下:

技术分享图片

2.默认echo

默认的echo参数会将多行输入转换成单行输出

[root@hdp-04 day10]# cat test.txt | xargs
a b c d e f g

3.-n选项

xargs的-n选项可以限制每次调用命令时候用到的参数个数。下面是将参数分割为多行,并且每行有M个元素

[root@hdp-04 day10]# cat test.txt | xargs -n 2
a b
c d
e f
g

4.-d选项

-d选项用于自定义分隔符

[root@hdp-04 day10]# echo 'str1@str2@str3' | xargs -d '@'
str1 str2 str3

5.通过文件控制参数传入

现有如下两个文件:

[root@hdp-04 day10]# cat tryParam.sh 
echo $* 'end;'

[root@hdp-04 day10]# cat param.txt 
param1
param2
param3
param4

1) 现在需要将param.txt中的参数逐个传给tryParam.sh文件并执行

[root@hdp-04 day10]# cat param.txt | xargs -n 1 sh tryParam.sh 
param1 end;
param2 end;
param3 end;
param4 end;

2) 现在需要将param.txt中的参数每次传2个给tryParam.sh文件并执行

[root@hdp-04 day10]# cat param.txt | xargs -n 2 sh tryParam.sh 
param1 param2 end;
param3 param4 end;

3)将所有参数一次性传给tryParam.sh文件并执行

[root@hdp-04 day10]# cat param.txt | xargs sh tryParam.sh 
param1 param2 param3 param4 end;

在上面的3个案例中,没有涉及到固定的参数,但是在实际使用的过程中,我们可能需要定义固定参数。

例如:在案例1中需要在每一次调度都需要添加一个-f参数

[root@hdp-04 day10]# cat param.txt | xargs -I {} sh tryParam.sh -f {}
-p param1 end;
-p param2 end;
-p param3 end;
-p param4 end;

使用-I参数的时候,命令以循环的方式执行,{}会在每次执行中被替换为相应的参数。

6.while子句的一个巧妙用法

[root@hdp-04 day10]# cat param.txt | (while read param;do echo '----'$param'---------';done)
----param1---------
----param2---------
----param3---------
----param4---------
# 上述语法等同于cat param.txt | xargs -I {} echo '----'{}'---------'

【shell】xargs用法说明

原文:https://www.cnblogs.com/OliverQin/p/12291021.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!