在nodejs代码中执行多个终端命令

时间:2014-05-02 06:31:39

标签: node.js shell

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

我有一个像smaple.sh这样的shell脚本,它工作正常

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

尝试在节点脚本中执行上述终端命令

        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 个答案:

答案 0 :(得分:1)

使用当前代码,node.js正在尝试执行以下操作:

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

如果您尝试在节点外运行,您将获得相同的结果。

您需要使用&&;来排除命令,如下所示:

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) {

});