【发布时间】:2018-12-09 09:44:16
【问题描述】:
如果命令参数太长,Xargs 将自动执行多次命令。
我目前正在检索 git 中的修订差异,并通过 xargs 将这些参数传递给 git 存档。碰巧版本差异很长,因此 xargs 自动将命令拆分为两次。
因此,git archive 对同一个存档执行了两次,导致第一个命令存档的任何内容都被第二个命令清除。
有没有办法让 xargs 在命令之间暂停或者通知 xargs 归档到两个不同的 zip 文件中?
【问题讨论】:
-
Xargs will execute command more than once automatically if the command arguments are too long你能举个例子吗?seq -s '' 9999 | xargs -t -- echo >/dev/null工作正常并执行单个回显。我找不到为 xargs 复制“太长”参数的方法。 -
Xargs 有 -s 选项。如果它超过了它的值,它将被 xargs 通过在同一个命令上多次运行并分割参数来分割。
-
@KamilCuk 阅读man page for xargs,它准确地描述了这种行为。即使没有@Hatjhie 的评论中描述的
-s选项,它也会这样做。 -
@Hatjhie,...显示您正在尝试运行的实际命令会很有帮助,这样我们就可以具体而不是推测性地讨论如何修改它。
-
...甚至可能是(确实,在我看来非常有可能)xargs 根本不是适合您工作的工具,但我们可以'如果我们看不到我们的代码,不建议使用什么。