繁体   English   中英

从任何目录运行 Shell 脚本 | 节点

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM