如何在“spawn”中运行没有参数的命令

Posted

技术标签:

【中文标题】如何在“spawn”中运行没有参数的命令【英文标题】:How to run a command with no args in 'spawn' 【发布时间】:2020-01-24 20:41:19 【问题描述】:

您好,我正在尝试从 NodeJS 运行终端命令并尝试使用 spawn 命令,我一直在使用 exec 但现在正在尝试 spawn 用于标准输出。

我读过的所有例子,比如这个: Exec : display stdout "live"

使用带有多个参数的命令,就像上面的示例一样,它们使用 spawn 运行的命令是:

var spawn = require('child_process').spawn, ls = spawn('ls', ['-lh', '/usr']);

这是'$ ls -lh /usr'

我试图只运行不带参数的命令“pwd”,但我一直尝试这样做的所有方式(如下所示)都导致了一个“错误”

var spawn = require('child_process').spawn, ls = spawn('pwd');

var spawn = require('child_process').spawn, ls = spawn('pwd', []);

stderr: usage: pwd [-L | -P]

【问题讨论】:

【参考方案1】:

spawn 中提供参数不是强制性的。在您的问题中,spawn 正在工作,这就是为什么您看到的错误实际上是在执行spawn('pwd') 之后stderr 的输出。

pwdspawn 的工作示例:

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

const pwd = spawn('pwd');

pwd.stdout.on('data', (data) => 
  console.log(`stdout: $data`);
);

pwd.stderr.on('data', (data) => 
  console.error(`stderr: $data`);
);

pwd.on('close', (code) => 
  console.log(`child process exited with code $code`);
);

演示:https://repl.it/repls/AlienatedTidyDatalogs

【讨论】:

以上是关于如何在“spawn”中运行没有参数的命令的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Nodejs 和 spawn 在 Windows 10 上以管理员身份运行一些 CMD 命令?

如何将字符串解析为 child_process.spawn 的适当参数?

如何在IDL Spawn命令中访问Python标准流?

如何使用 nodejs child_process.spawn 捕获 ENOENT?

在 posix_spawn() 创建的过程中调用 setsid()

node js cli STDOUT STDERR 输出 exec 和 spawn 命令