我想编写一个JavaScript函数,它将执行系统外壳命令(例如ls
)并返回值。
我该如何实现这一点?
发布于 2013-12-17 23:33:23
这里的许多其他答案似乎都是从浏览器中运行的JavaScript函数的角度来解决这个问题的。我将拍摄并回答假设,当提问者说“外壳脚本”时,他指的是一个Node.js后端JavaScript。可能会使用commander.js来构建您的代码:)
您可以使用node中的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();
希望这能有所帮助!
发布于 2018-09-30 14:06:42
我不知道为什么之前的答案给出了各种各样复杂的解决方案。如果你只想执行一个像ls
这样的快速命令,你不需要异步/等待或回调或其他任何东西。这是您需要的所有内容- execSync
const execSync = require('child_process').execSync;
// import { execSync } from 'child_process'; // replace ^ if using ES modules
const output = execSync('ls', { encoding: 'utf-8' }); // the default is 'buffer'
console.log('Output was:\n', output);
对于错误处理,在语句周围添加一个try
/catch
块。
如果您正在运行一个需要很长时间才能完成的命令,那么可以看看asynchronous exec
函数。
发布于 2009-12-10 18:58:06
这完全取决于JavaScript环境。请详细说明。
例如,在Windows脚本中,您可以执行以下操作:
var shell = WScript.CreateObject("WScript.Shell");
shell.Run("command here");
https://stackoverflow.com/questions/1880198
复制相似问题