How to exec
连续地?例如ls
after cd
?
I tried
exec = require('child_process').exec;
exec('cd ~/',
function(){
exec('ls'),
function(err, stdout, stderr){
console.log(stdout); // this logs current dir but not ~/'s
}
}
)
exec('cd ~/').exec('ls', function(err, stdout, stderr){
console.log(stdout);
})//this also fails because first exec returns a ChildProcess Object but not itself.
这是不可能的,因为 exec 和 spawn 创建了一个新进程。但有一种方法可以模拟这一点。您可以使用 exec 启动一个进程并同时执行多个命令:
在命令行中,如果你想在同一行执行 3 个命令,你可以这样写:
cmd1 & cmd2 & cmd3
因此,所有 3 个命令都在同一进程中运行,并且可以访问先前执行的命令修改的上下文。
让我们以您的示例为例,您想要执行 cd ../ 然后执行 dir 并查看上一个目录列表。
在cmd中你应该写:
cd../ & dir
在 Node js 中,您可以使用 exec 启动一个进程,并告诉它启动另一个节点实例来评估内联脚本:
var exec = require('child_process').exec;
var script = "var exec = require('child_process').exec;exec('dir',function(e,d,er){console.log(d);});";
script = '"'+script+'"';//enclose the inline script with "" because it contains spaces
var cmd2 = 'node -e '+script;
var cd = exec('cd ../ &'+cmd2,function(err,stdout,strerr)
{
console.log(stdout);//this would work
})
如果您只想更改当前目录,您应该查看有关它的文档http://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback http://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)