如何在同一节点子进程中执行多个命令?

时间:2018-11-23 19:31:04

标签: javascript node.js bash

我希望能够在我的节点子进程中运行以下2条bash命令

pushd ${directory} && git stash

然后根据输出结果;

git pull origin master

git pull origin master && git stash pop

然后最后

npm install --prefix ${directory}  && popd

问题是,exec为每个命令创建了一个新进程,因此要执行的下一个命令对上一个命令一无所知。例如,运行popd会引发错误,因为pushd是在另一个进程中运行的,并且不知道在先前的命令中存放了哪个目录。

我目前正在尝试无济于事:

const parentProc = await execSync(`pushd ${directory} && git stash`)

if(parentProc.toString().includes("No local changes to save")){
    await execSync("git pull origin master")    
}else{
    await execSync("git pull origin master && git stash pop")   
}

await execSync(`npm install --prefix ${directory}  && popd`)

如何在同一过程中运行所有这些命令?

0 个答案:

没有答案