如何使用xargs
构建和运行命令列表比如这些:
#1
cmd1 <arg1> && cmd2 <arg1> && cmd3 <arg1>
#2
cmd1 <arg1> ; cmd2 <arg1>
答案1
通过为每行输入启动一个子 shell xargs
:
xargs -I {} sh -c 'cmd1 "$1" && cmd2 "$1" && cmd3 "$1"' sh {}
xargs -I {} sh -c 'cmd1 "$1"; cmd2 "$1"' sh {}
该命令sh -c
将给定的字符串作为 shell 脚本执行。sh -c
脚本本身之后的参数被赋予$0
并$1
在脚本内部。的值$0
通常应该是 shell 的名称,这就是我们sh
作为此参数传递的原因(它将在错误消息中使用)。
或者,
xargs sh -c '
for arg do
cmd1 "$arg" && cmd2 "$arg" && cmd3 "$arg"
done' sh
xargs sh -c '
for arg do
cmd1 "$arg"
cmd2 "$arg"
done' sh
这些变体将采用尽可能多的参数,然后在sh -c
脚本内的循环中将代码应用于这些参数。
与往常一样,在使用 时xargs
,必须小心,以便sh -c
正确分隔提供给给定实用程序(此处)的参数。