例如,假设我希望复制简单命令
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();
不幸的是没有成功
答案 0 :(得分:4)
您不能将重定向字符(>)作为参数传递给spawn,因为它不是命令的有效参数。
您可以使用exec
而不是spawn,它会在单独的shell中执行您提供的任何命令字符串,或采用以下方法:
var cat = spawn('echo', ['testing']);
cat.stdout.on('data', function(data) {
fs.writeFile('temp.txt', data, function (err) {
if (err) throw err;
});
});
答案 1 :(得分:0)
您可以管道节点控制台输出la"节点foo.js> output.txt的"或者您可以使用fs包进行文件编写
答案 2 :(得分:0)
echo
似乎没有阻止stdin:
~$ echo "hello" | echo
~$
^那里没有输出......
所以你可以试试这个:
var cat = spawn('tee', ['temp.txt']);
cat.stdin.write("testing");
cat.stdin.end();
我不知道这对你是否有用。
答案 3 :(得分:0)
exec
。const { exec } = require( "child_process" );
exec( "echo > temp.txt" );
不确定exec
和spawn
之间的优缺点,但这确实使您可以轻松地运行完整命令并将其写入或追加到文件中。