たとえば、単純なコマンドを複製したいとします。
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();
残念ながら成功しません
たとえば、単純なコマンドを複製したいとします。
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();
残念ながら成功しません
リダイレクト文字(>)はコマンドの有効な引数ではないため、スポーンする引数として渡すことはできません。exec
別のシェルで指定したコマンド文字列を実行するspawnの代わりに使用するか、次の方法を使用できます。
var cat = spawn('echo', ['testing']);
cat.stdout.on('data', function(data) {
fs.writeFile('temp.txt', data, function (err) {
if (err) throw err;
});
});
ノードコンソールの出力を「nodefoo.js>output.txt」にパイプするか、fsパッケージを使用してファイルの書き込みを行うことができます。
echo
stdinをブロックしていないようです:
~$ echo "hello" | echo
~$
^そこに出力がありません...
だからあなたが試すことができるのはこれです:
var cat = spawn('tee', ['temp.txt']);
cat.stdin.write("testing");
cat.stdin.end();
それがあなたに役立つかどうかはわかりませんが。
exec
ます。const { exec } = require( "child_process" );
exec( "echo > temp.txt" );
exec
との長所/短所はわかりませんがspawn
、コマンド全体を簡単に実行して書き込みたり、ファイルに追加したりすることができます。