2

我想将命令设置为程序的配置选项。有参数传递给命令。

但我希望将命令的输出替换为 sed。

原则上我想做这样的事情:

option = cmd <arg1> <arg2> | sed s/x/y/

但是该选项只能这样设置:

 option = cmd

并且参数由程序自动附加。

所以我想像这样“反转”管道:

 option = sed s/x/y/ < <(cmd)

但是由于程序附加了参数,因此将执行以下操作:

 sed s/x/y/ < <(cmd) <arg1> <arg2>

但我想要

 sed s/x/y/ < <(cmd <arg1> <arg2>)

由于参数选项中没有占位符,因此我无法正确关闭括号。

有什么办法可以在不编写包装脚本的情况下解决这个问题?

4

1 回答 1

3

如果你小心引用,你可以这样做:

option = bash -c 'cmd "$1" "$2" | sed "s/x/y/"' sub

末尾的“子”二字随意但必要;它在那里是因为$1在创建的子shellbash -c中实际上是第二个位置参数,而不是第一个。

于 2013-07-29T15:23:13.717 回答