如何在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
提交
取消
