微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决要通过管道传输的输出必须作为 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 举报,一经查实,本站将立刻删除。