📜  节点等效于 bash exec - Javascript (1)

📅  最后修改于: 2023-12-03 15:27:45.998000             🧑  作者: Mango

节点等效于 Bash exec - Javascript

在Javascript中,可以使用child_process模块来执行外部命令,并且将结果返回给我们的程序。这个功能类似于Bash shell中的exec命令。

使用child_process.exec方法

要使用子进程的exec方法,在Node.js中,需要导入child_process模块:

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

接下来,使用exec方法来运行外部命令。比如想要运行Shell命令ls

exec('ls', (error, stdout, stderr) => {
  if (error) {
    console.error(`执行错误: ${error}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});

exec方法接受两个参数:待执行的命令和一个回调函数。回调函数中有三个参数:错误信息、标准输出和标准错误输出。在回调函数中,我们可以将返回结果存储到一个变量中,或者将其直接输出。

如果您需要将Shell命令中的变量插入到执行命令中,可以使用模板字符串:

const fileName = 'example.txt';
exec(`cat ${fileName}`, (error, stdout, stderr) => {
  if (error) {
    console.error(`执行错误: ${error}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});
使用child_process.spawn方法

exec方法类似,在Node.js中还可以使用spawn方法来执行外部命令:

const { spawn } = require('child_process');
const child = spawn('ls', ['-lh', '/usr']);

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

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

child.on('close', (code) => {
  console.log(`子进程退出码:${code}`);
});

spawn方法的第一个参数是待执行的命令,第二个参数是一个数组,其中每个项都是该命令的参数。因此,spawn('ls', ['-lh', '/usr'])等同于在终端中键入ls -lh /usr命令。

总结

在Javascript中使用child_process模块,可以轻松执行Shell命令或其他外部命令,并将结果返回到我们的程序中。使用exec方法执行简单的命令,使用spawn方法执行需要大量数据(如图像处理)的命令。