最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

[我正在尝试使用nodejs在sh中执行文件,但控制台告诉我找不到该文件

网站源码admin20浏览0评论

[我正在尝试使用nodejs在sh中执行文件,但控制台告诉我找不到该文件

[我正在尝试使用nodejs在sh中执行文件,但控制台告诉我找不到该文件

这是我在互联网上找到的代码:

const { exec } = require('child_process');
var yourscript = exec('sh launch.sh', (error, stdout, stderr) => {
   console.log(stdout);
   console.log(stderr);
   if (error !== null) {
     console.log(`exec error: ${error}`);
   }
});

这是我的sh文件,与我之前的代码在同一文件中:

   echo "Hi There!"

但是每次我运行程序时,控制台都会向我显示:

   exec error: Error: Command failed: sh launch.sh
   sh: 0: Can't open launch.sh

有人可以帮我提供我的代码吗?

回答如下:

首先,您似乎遇到了文件权限问题,因此,为解决此问题,请先为用户设置文件权限,因为用户需要执行权限:

chmod 755 launch.sh

其次,您在网上找到的代码正在使用“ exec”,现在已弃用了“ exec”,而推荐使用内置的child_process.execFile。因此,对于您的需求,代码将类似于:

var child_process = require('child_process');

child_process.exec('sh launch.sh', function(error, stdout, stderr){
    console.log(stdout);
});

这应该有助于入门!内部命令sh launch.sh应该可以直接在命令行中执行,因此无需运行主主机或nodejs脚本即可进行测试!在CLI中键入命令,然后按Enter!除了调用sh launch.sh以外,请执行/bin/sh launch.sh

当然,您可能希望查看文档来改进实现并完全理解操作系统下的文件permissionssh的含义,最后是child_process.exec。

https://www.linux/tutorials/understanding-linux-file-permissions

https://en.wikipedia/wiki/Bourne_shell

https://nodejs/api/child_process.html

发布评论

评论列表(0)

  1. 暂无评论