私は端末でうまく動作するシェルコマンドを持っていますが、ノードのchild_process
によって実行されたときにエラーが発生します。ここノードのchild_processで奇妙なパイプの動作?
cat /tmp/file.json | jq
child_process
から同じコマンドを実行している:ここ
端末で使用されるコマンド(file.jsonはJSONファイルである)ある
var cp = require("child_process");
var command = "cat /tmp/gen_json | jq";
cp.exec(command, function(err, stdout, stderr) {
stderr ? console.log(stderr) : console.log(stdout);
});
生成する:
をjq - commandline JSON processor [version 1.5-1-a5b5cbe]
Usage: jq [options] <jq filter> [file...]
jq is a tool for processing JSON inputs, applying the
given filter to its JSON text inputs and producing the
...
これはjq
を実行したときに表示されるデフォルトのメッセージです。先ほどのパイプなしでjq
を実行したようです。
パイプの動作に関連していない、しかし、あなたはここで 'cat'を必要としません:
または、(ネコ虐待を避けるために)さらに良い:あなたが明示的に指定する必要が理由です(それがあなたが走っている実際のコマンドの場合)。 'jq '..filter'/tmp/file.json'を試してください。 – randomir
私の場合、@randomir 'cat'が必要です。 'jq/tmp/file.json'を実行すると' unexpected '/' 'で壊れます。 'cat'が' jq'の前にファイルを解析するようにすると、私はそのエラーに遭遇しません。 (pastebinでjsonに更新された質問) –
'jq'のように見えます。 jq '。' '。これはあなたの他の問題を解決します: 'jq '。'ファイル 'を生成する。 – randomir