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

您不能将重定向字符 (>) 作为参数传递给 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;
    });
});
于 2012-04-03T21:43:13.677 回答
0

echo似乎没有阻止标准输入:

~$ echo "hello" | echo
~$

^ 那里没有输出...

所以你可以尝试的是:

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

我不知道这对你是否有用。

于 2012-04-03T21:22:57.353 回答
0

您可以通过管道节点控制台输出 la “node foo.js > output.txt”,也可以使用 fs 包进行文件写入

于 2012-04-03T21:19:28.230 回答
0

使用exec.

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

exec( "echo > temp.txt" );

不确定 和 之间的优缺点execspawn但它确实允许您轻松运行完整命令并将其写入或附加到文件中。

于 2020-04-02T15:48:37.700 回答