在Node.js代码中执行多个终端命令

3

我正在尝试通过Node脚本执行多个终端命令

我有一个名为smaple.sh的shell脚本,它可以正常运行。

cd ~/Desktop
find -type f -printf '%T+\t%p\n' | sort -n

我试图在Node脚本中执行上述终端命令

        var command = ' cd ~/Desktop'
        command +=' find -type f -printf %T+\\t%p\\n | sort -n' 

 exec(command, function (error, stdout, stderr) {

});

执行上述代码时我什么都没有得到。 首先需要更改目录,然后再执行第二个命令。

find -type f -printf %T+\\t%p\\n | sort -n
1个回答

3

根据你当前的代码,node.js 正尝试执行以下命令:

cd ~/Desktop find -type f -printf %T+\\t%p\\n | sort -n

如果你在 node 之外尝试运行它,结果将相同。

你需要使用 && 或者 ; 来分隔命令,如下所示:

var command = ' cd ~/Desktop &&'
command +=' find -type f -printf %T+\\t%p\\n | sort -n' 

exec(command, function (error, stdout, stderr) {

});

也许更优雅的方法是:
var commands = [];
commands.push('cd ~/Desktop');
commands.push('find -type f -printf %T+\\t%p\\n | sort -n');

var command = commands.join(' && ');

exec(command, function (error, stdout, stderr) {

});

我得到了 exec error: Error: Command failed: execvp(): No such file or directory 的错误,但是我已经有那个目录了。 - Sush
在终端上执行您的代码时,它可以正常工作。但是使用exec时会出现上述错误。 - Sush

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接