【发布时间】: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