当我执行xargs -n2
、输入x x x x x
并点击时Enter,我只得到 4 倍的回报:
$ xargs -n2
x x x x x
x x
x x
但是,当我通过管道将其x x x x x
输入同一命令时,我会得到相同数量的 x:
$ echo x x x x x | xargs -n2
x x
x x
x
为什么在第一种情况下参数的数量要么向上取整,要么向下取整?
答案1
在第一行中,xargs
仍然等待第二个参数或输入结束。按Ctrl- Dxargs 后继续其余部分,您将看到第五个x
作为单个参数。
这个例子可以解释这种行为:
(echo "x x x x x"; sleep 5; echo "x") | xargs -n2
输出:
x x
x x
x x # after 5 seconds
x
在第二个语句中的第 6 个之后,echo
输入流完成并xargs
最终有了第二个参数,但在此之前它会等待 5 秒。