nodejs中的exec没有获取字符串shellcript路径

时间:2017-11-09 05:53:34

标签: javascript angularjs node.js reactjs electron

我是NodeJs的新手。要从电子应用程序运行shellscript文件,我使用了nodejs中的child_process包。 当我们给exec绝对路径时,它工作正常。但是如果我们将绝对路径存储在某个变量中并将该变量传递给exec它会显示“没有这样的文件或目录”错误。

//In this case it works fine due to absolute path provided
    const exec = require('child_process').exec;

    var scriptFile = exec('sh --Here is absolutepath--/demoScript.sh');

    scriptFile.stdout.on('data', function(data){
         console.log(data); 
    });

    scriptFile.stderr.on('data', function(data){
       console.log(data);
    });

但是如果我们创建绝对路径的var它会显示错误

const exec = require('child_process').exec;
const path = require("path");

var absolutePath = path.resolve('../.././demoScript.sh');
var scriptFile = exec('sh absolutePath');

   scriptFile.stdout.on('data', function(data){
       console.log(data); 
   });

   scriptFile.stderr.on('data', function(data){
      console.log(data);
   });

1 个答案:

答案 0 :(得分:0)

问题出在var scriptFile = exec('sh absolutePath'); exec函数以string为参数。因此,在您的情况下,它实际上是执行absolutePath而不是tha absolutePath的值。 试试这个,而不是

var toExec = 'sh ' + absolutePath;
var scriptFile = exec(toExec);

此外,如果这不起作用,则问题出在sh。你不需要它,因为exec函数只会执行你提供的任何路径。