我需要在node.js函数
result = execSync('node -v');
它将同步执行给定的命令行并返回该命令文本的所有stdout。
ps.同步错误。我知道。仅供个人使用。
更新
现在我们有了mgutz的解决方案,它给出了退出代码,但没有stdout!还在等更确切的答案。
更新
Mgutz更新了他的答案,解决方案在这里:)
同样,作为dgo。一提到,有一个独立的模块execc -sync
更新2014-07-30
ShellJS lib到了。考虑到这是目前最好的选择。
更新2015-02-10
终于!NodeJS 0.12原生支持execSync。
查看官方文件
我实际上遇到过这样的情况,我需要从一个包中一个接一个地运行多个命令。json preinstall脚本的一种方式,将工作在Windows和Linux/OSX,所以我不能依赖于非核心模块。
这就是我想到的:
#cmds.coffee
childproc = require 'child_process'
exports.exec = (cmds) ->
next = ->
if cmds.length > 0
cmd = cmds.shift()
console.log "Running command: #{cmd}"
childproc.exec cmd, (err, stdout, stderr) ->
if err? then console.log err
if stdout? then console.log stdout
if stderr? then console.log stderr
next()
else
console.log "Done executing commands."
console.log "Running the follows commands:"
console.log cmds
next()
你可以这样使用它:
require('./cmds').exec ['grunt coffee', 'nodeunit test/tls-config.js']
EDIT:正如所指出的,这实际上并不返回输出,也不允许您在Node程序中使用命令的结果。另一个想法是使用LiveScript回调。http://livescript.net/
我实际上遇到过这样的情况,我需要从一个包中一个接一个地运行多个命令。json preinstall脚本的一种方式,将工作在Windows和Linux/OSX,所以我不能依赖于非核心模块。
这就是我想到的:
#cmds.coffee
childproc = require 'child_process'
exports.exec = (cmds) ->
next = ->
if cmds.length > 0
cmd = cmds.shift()
console.log "Running command: #{cmd}"
childproc.exec cmd, (err, stdout, stderr) ->
if err? then console.log err
if stdout? then console.log stdout
if stderr? then console.log stderr
next()
else
console.log "Done executing commands."
console.log "Running the follows commands:"
console.log cmds
next()
你可以这样使用它:
require('./cmds').exec ['grunt coffee', 'nodeunit test/tls-config.js']
EDIT:正如所指出的,这实际上并不返回输出,也不允许您在Node程序中使用命令的结果。另一个想法是使用LiveScript回调。http://livescript.net/