Linux 使用xargs运行多个命令

Linux 使用xargs运行多个命令,linux,bash,xargs,Linux,Bash,Xargs,作为起点,我在bash中运行以下程序: seq 1 5 | xargs -d $'\n' sh -c 'for arg do echo $arg; done' 预期产出 1 2 3 4 5 2 3 4 5 实际产出 1 2 3 4 5 2 3 4 5 i、 e.缺少第一个预期参数 我可能是一个工具,但想知道为什么会这样。问题在于内联bash代码 seq 1 5 | xargs-n echo生成所需的结果。它也可以简化为seq 5 | xargs-n echo,因为seq假设范围从1开始

作为起点,我在bash中运行以下程序:

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

1
2
3
4
5
2
3
4
5
实际产出

1
2
3
4
5
2
3
4
5
i、 e.缺少第一个预期参数


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

问题在于内联bash代码


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

您必须将位置0处的一些伪值传递到
sh
脚本,如下所示:

seq 15 | xargs-d$'\n'sh-c'表示arg do echo$arg;完成_
1.
2.
3.
4.
5.

在不将
\uucode>传递到
sh
的情况下,脚本
1
作为
$0
传递,而
对于arg
则只循环通过以位置
1
开头的位置参数。

总之,您想列出数字还是按行执行命令? 通常,在bash中使用以下命令

seq 1 5 | xargs -n 1 -I {} echo {}
输出

1
2
3
4
5

这个被骗问题没有提到xargs
那么它到底是一个什么样的被骗者呢?@anubhava如果你有一个金徽章,你可以单方面重新打开这个问题,如果你不喜欢这个重复的目标,或者添加一个更好的。我不认为这个问题真的与xargs有关,虽然我不反对链接答案与这个问题有关,但这里OP要求
使用xargs运行多个命令
,我们已经有了一个答案,从一个建议的solution@anubhava好吧,那就重新打开吧,谢谢。也许这会教我停止忽视那些在第一次阅读时毫无意义的东西。这就是为什么你会在这些答案上看到
xargs sh-c'.'sh