[英]Running Shell Script From Any Directory | NodeJs
我遇到了一个我似乎无法解决的问题。 看看下面的代码片段。 我正在尝试运行 shell 脚本以检索我的 CLI 项目中的一些数据。 手头的问题是它无法在指定路径以外的任何目录中工作,这意味着它不仅给用户带来了巨大的不便,而且给我自己带来了极大的不便。 那么,有没有办法让这段代码不管用户的当前目录如何工作? 我查看了其他一些 StackOverflow 问题,但我不确定我是否理解它是如何工作的。
例子.js
const {exec} = require('child_process');
exec(`sh ./worker/lib/scripts/hi.sh`,
(error, out) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
else if (out) {
console.log(`stderr: ${out}`);
return;
}
});
嗨.sh
echo "hi"
这是因为您的命令中的路径是相对于您调用它的位置。 使用__dirname
来获取执行文件所在目录的绝对路径。
exec(`sh ${__dirname}/worker/lib/scripts/hi.sh`)
另一种处理不同文件夹中脚本的方法:
exec(`sh ${path.join("worker", "lib", "scripts", "hi.sh")}`)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.