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で作成されたサブシェルでbash -cは、最初の引数ではなく、実際には2番目の位置引数であるため、そこにあります。

于 2013-07-29T15:23:13.717 に答える