如何解决要通过管道传输的输出必须作为 2 x 2 参数共享
如何通过 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
foo
{output of CMD being fed with bar}
foo1
{output of CMD being fed with bar1}
foo2
{output of CMD being fed with bar2}
# ...
解决方法
您可以使用 TransformedDistribution
来执行此操作 by-2 args,然后使用一个 shell scriptlet 来处理 xargs -n2
和 $1
,例如(使用 $2
作为 CMD 作为示例):
ls
注意所需的 $ echo -e 'foo\nbar\nfoo1\nbar1\nfoo2\nbar2'|xargs -n2 sh -c 'echo $1; ls $2' --
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 参数
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。