要通过管道传输的输出必须共享为 2 x 2 个参数

Ouput to be piped must be shared as 2 by 2 arguments

如何通过 2 个参数共享管道输出 2,只有第一个参数用于打印输出命令,即回显到 stdout/stderr,第二个参数用于另一个命令(让它是 CMD),通过利用 xargs

输出即。要通过管道传输的源可以是一行中的 2 个参数,也可以是 1 行中的 1 个参数,下面仅作说明:

echo -e 'foo bar\nfoo1 bar1\nfoo2 bar2\n'  # ... much more

echo -e 'foo\nbar\nfoo1\nbar1\nfoo2\bar2\n'

所以怎么样

echo -e 'foo bar\nfoo1 bar1\nfoo2 bar2\n' |xargs echo  |xargs CMD

应该是真的?
预期打印输出 stdout/stderr 结果

foo
{output of CMD being fed with bar}

foo1
{output of CMD being fed with bar1}

foo2
{output of CMD being fed with bar2}

# ...

您可以使用 xargs -n2 通过 2 个参数来执行此操作,然后滥用 shell 脚本来处理 </code> 和 <code>,例如(使用 ls 作为 CMD 作为示例):

$ echo -e 'foo\nbar\nfoo1\nbar1\nfoo2\nbar2'|xargs -n2 sh -c 'echo ; ls ' --
foo
ls: cannot access 'bar': No such file or directory
foo1
ls: cannot access 'bar1': No such file or directory
foo2
ls: cannot access 'bar2': No such file or directory

注意需要的 -- 作为最后一个 xargs 参数