Linux 使用xargs运行多个命令
作为起点,我在bash中运行以下程序: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开始
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
。