使用 xargs 构建并运行命令列表

使用 xargs 构建并运行命令列表

如何使用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正确分隔提供给给定实用程序(此处)的参数。

相关内容