为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Javascript中执行shell命令

如何在Javascript中执行shell命令

MMMHUHU 2019-08-26 17:45:59
如何在Javascript中执行shell命令我想编写一个JavaScript函数,它将执行系统shell命令(ls例如)并返回值。我该如何实现这一目标?
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

这里的许多其他答案似乎都是从浏览器中运行的JavaScript函数的角度来解决这个问题。我会拍摄并回答,假设当提问者说“Shell Script”时,他的意思是Node.js后端JavaScript。可能使用commander.js来使用框架你的代码:)

您可以使用节点API中的child_process模块。我粘贴了下面的示例代码。

var exec = require('child_process').exec, child;child = exec('cat *.js bad_file | wc -l',
    function (error, stdout, stderr) {
        console.log('stdout: ' + stdout);
        console.log('stderr: ' + stderr);
        if (error !== null) {
             console.log('exec error: ' + error);
        }
    });
 child();

希望这可以帮助!


查看完整回答
反对 回复 2019-08-26
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

您的示例foo.js文件可能如下所示:

import { exec } from 'child_process';/**
 * Execute simple shell command (async wrapper).
 * @param {String} cmd
 * @return {Object} { stdout: String, stderr: String }
 */async function sh(cmd) {
  return new Promise(function (resolve, reject) {
    exec(cmd, (err, stdout, stderr) => {
      if (err) {
        reject(err);
      } else {
        resolve({ stdout, stderr });
      }
    });
  });}async function main() {
  let { stdout } = await sh('ls');
  for (let line of stdout.split('\n')) {
    console.log(`ls: ${line}`);
  }}main();

确保你有巴贝尔:

npm i babel-cli -g

安装最新预设:

npm i babel-preset-latest

运行它:

babel-node --presets latest foo.js


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 5475 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号