使用 xargs 到 运行 多个命令

Using xargs to run multiple commands

this post为起点我是运行以下bash:

seq 1 5 | xargs -d $'\n' sh -c 'for arg do echo $arg; done'

预期输出

1
2
3
4
5

实际产量

2
3
4
5

即缺少第一个预期参数。

我可能是一个工具,但想知道为什么会这样。

问题在于您的内联 bash 代码。

seq 1 5 | xargs -n echo 生成所需的结果。它也可以简化为 seq 5 | xargs -n echo 因为 seq 假定范围从 1 开始。

你必须将位置 0 的一些虚拟值传递给 sh 脚本,如下所示:

seq 1 5 | xargs -d $'\n' sh -c 'for arg do echo $arg; done' _
1
2
3
4
5

不将 _ 传递给 sh,脚本 1 将作为 [=15=] 传递,而 for arg 循环遍历从位置 1 开始的位置参数只有.

总之,你是想列出数字还是逐行执行命令? 通常,在 bash.

中使用以下命令
seq 1 5 | xargs -n 1 -I {} echo {}

输出

1
2
3
4
5