Nodejs Exec函数不适用于多行Shell脚本

时间:2018-06-22 20:31:33

标签: node.js shell exec child-process

如果要调用某个URL,我试图让Node.js以编程方式执行Shell脚本。

我可以调用单行unix命令,例如“ echo hello-world”。这符合我的期望(输出到stdout“ hello-world”)。

import { exec } from 'child-process';
exec('echo hello-world', function(error, stdout, stderr) {
    console.log('stdout: ' + stdout);
    console.log('stderr: ' + stderr);

    if (error !== null) {
        console.log('exec error: ' + error);
    }

    console.log('Deployment finished!');
    return stdout;
})

但是我想使用此命令运行脚本。例如

shell-script.sh(已成为可执行文件chmod +x shell-script.sh

echo hello-world

ls -la

和nodejs:

exec('./shell-script.sh', ...)

,但这在nodejs中不起作用。我在桌面终端上尝试了相同的脚本,并且运行良好。

然后我只用第一行进行测试。 (echo hello-world),该方法有效,但我不知道为什么。

然后我将Shell脚本修改为:

echo hello-world &&\
ls -la

注意:我在执行时使用&&\将命令分成一行。

这有效!但是有没有一种方法可以执行带有多行的Shell脚本,而不必在每行的末尾添加&&\

1 个答案:

答案 0 :(得分:0)

显然,它可以是exec('sh shell-scrip.sh')