如何在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();
希望这可以帮助!

慕田峪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
添加回答
举报
0/150
提交
取消