如何使用nodejs运行shell脚本文件?

时间:2017-06-20 08:30:21

标签: node.js shell cassandra

我需要使用执行一组Cassandra DB命令的nodeJS运行shell脚本文件。任何人都可以帮我这个

在db.sh文件中。

create keyspace dummy with   replication = {'class':'SimpleStrategy','replication_factor':3}

create table dummy (userhandle text, email text primary key , name text,profilepic)

4 个答案:

答案 0 :(得分:73)

您可以使用nodejs的“子进程”模块在nodejs中执行任何shell命令或脚本。让我举个例子,我在nodejs中运行一个shell脚本(hi.sh)。

<强> hi.sh

echo "Hi There!"

<强> node_program.js

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

这里,当我运行nodejs文件时,它将执行shell文件,输出将是:

生成

node node_program.js

<强>输出

Hi There!

只需在exec回调中提及shell命令或shell脚本,即可执行任何脚本。

希望这有帮助!快乐的编码:)

答案 1 :(得分:42)

您可以使用此模块https://www.npmjs.com/package/shelljs执行任何shell命令。

 const shell = require('shelljs');
 //shell.exec(comandToExecute, {silent:true}).stdout;
 //you need little improvisation
 shell.exec('./path_to_ur_file')

答案 2 :(得分:0)

此外,您可以使用shelljs插件。 这很容易,而且是跨平台的。

安装命令:

npm install [-g] shelljs

什么是shellJS

ShellJS是Unix的可移植(Windows / Linux / OS X)实现 Node.js API之上的shell命令。你可以用它来消除 您的Shell脚本对Unix的依赖性,同时仍然保持其 熟悉而强大的命令。您也可以全局安装它,这样 您可以从Node项目外部运行它-告别那些 肮脏的Bash脚本!

其工作方式示例:

var shell = require('shelljs');

if (!shell.which('git')) {
  shell.echo('Sorry, this script requires git');
  shell.exit(1);
}

// Copy files to release dir
shell.rm('-rf', 'out/Release');
shell.cp('-R', 'stuff/', 'out/Release');

// Replace macros in each .js file
shell.cd('lib');
shell.ls('*.js').forEach(function (file) {
  shell.sed('-i', 'BUILD_VERSION', 'v0.1.2', file);
  shell.sed('-i', /^.*REMOVE_THIS_LINE.*$/, '', file);
  shell.sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, shell.cat('macro.js'), file);
});
shell.cd('..');

// Run external tool synchronously
if (shell.exec('git commit -am "Auto-commit"').code !== 0) {
  shell.echo('Error: Git commit failed');
  shell.exit(1);
}

此外,您可以从命令行使用:

$ shx mkdir -p foo
$ shx touch foo/bar.txt
$ shx rm -rf foo

答案 3 :(得分:-1)

你可以去

require('./myScript.sh');

只需确保在bash脚本中添加shebang。

#! /bin/bash