5

たとえば、単純なコマンドを複製したいとします。

echo testing > temp.txt

これは私が試したことです

var util  = require('util'),
    spawn = require('child_process').spawn;

var cat = spawn('echo', ['> temp.txt']);
cat.stdin.write("testing");
cat.stdin.end();

残念ながら成功しません

4

4 に答える 4

5

リダイレクト文字(>)はコマンドの有効な引数ではないため、スポーンする引数として渡すことはできません。exec別のシェルで指定したコマンド文字列を実行するspawnの代わりに使用するか、次の方法を使用できます。

var cat = spawn('echo', ['testing']);

cat.stdout.on('data', function(data) {
    fs.writeFile('temp.txt', data, function (err) {
        if (err) throw err;
    });
});
于 2012-04-03T21:43:13.677 に答える
0

ノードコンソールの出力を「nodefoo.js>output.txt」にパイプするか、fsパッケージを使用してファイルの書き込みを行うことができます。

于 2012-04-03T21:19:28.230 に答える
0

echostdinをブロックしていないようです:

~$ echo "hello" | echo
~$

^そこに出力がありません...

だからあなたが試すことができるのはこれです:

var cat = spawn('tee', ['temp.txt']);
cat.stdin.write("testing");
cat.stdin.end();

それがあなたに役立つかどうかはわかりませんが。

于 2012-04-03T21:22:57.353 に答える
0

を使用しexecます。

const { exec } = require( "child_process" );

exec( "echo > temp.txt" );

execとの長所/短所はわかりませんがspawn、コマンド全体を簡単に実行して書き込みたり、ファイルに追加したりすることができます。

于 2020-04-02T15:48:37.700 に答える