【问题标题】:Nodejs Exec Function Doesnt Work For Multiline Shell ScriptsNodejs Exec 函数不适用于多行 Shell 脚本
【发布时间】:2018-06-22 20:31:32
【问题描述】:

如果调用了某个 url,我正在尝试让 nodejs 以编程方式执行 shell 脚本。

我可以调用单行 unix 命令,例如“echo hello-world”。这符合我的预期(输出到标准输出“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 脚本?

【问题讨论】:

  • 你试过exec('sh shell-scrip.sh')吗?
  • 如果您不介意,请回答。

标签: node.js shell exec child-process


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-03-15
    • 2015-09-05
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 2011-03-28
    相关资源
    最近更新 更多