如果要调用某个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脚本,而不必在每行的末尾添加&&\
?
答案 0 :(得分:0)
显然,它可以是exec('sh shell-scrip.sh')
。