要通过管道传输的输出必须共享为 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 参数
如何通过 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 参数