为什么应用到相同数量的参数的 xargs -n2 的输出无论是通过管道还是从键盘输出都不同?

为什么应用到相同数量的参数的 xargs -n2 的输出无论是通过管道还是从键盘输出都不同?

当我执行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 秒。

相关内容