我需要使用nodeJS运行一个shell脚本文件,它执行一组Cassandra DB命令。有人能帮我吗?
在db.sh文件中:
create keyspace dummy with replication = {'class':'SimpleStrategy','replication_factor':3} create table dummy (userhandle text, email text primary key , name text,profilepic)
euoag5mw1#
您可以使用nodejs的"child process"模块在nodejs中执行任何shell命令或脚本。让我举一个例子,我正在nodejs中运行一个shell脚本(hi.sh)。"嗨,嘘"
echo "Hi There!"
const { exec } = require('child_process'); 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脚本,就可以执行任何脚本。
exec
pftdvrlh2#
您可以使用shelljs module执行任何shell命令
const shell = require('shelljs') shell.exec('./path_to_your_file')
2cmtqfgy3#
你可以去:
var cp = require('child_process');
然后:
cp.exec('./myScript.sh', function(err, stdout, stderr) { // handle err, stdout, stderr });
运行$SHELL中的命令。还是走吧
cp.spawn('./myScript.sh', [args], function(err, stdout, stderr) { // handle err, stdout, stderr });
不使用shell运行文件。还是走吧
cp.execFile();
它与cp.exec()相同,但不查找$PATH。你也可以去
cp.fork('myJS.js', function(err, stdout, stderr) { // handle err, stdout, stderr });
使用node.js运行javascript文件,但在子进程中运行(对于大型程序)。
您可能还必须使用事件侦听器访问stdin和stdout。例如:
var child = cp.spawn('./myScript.sh', [args]); child.stdout.on('data', function(data) { // handle stdout as `data` });
jecbmhm34#
另外,你也可以使用shelljs插件。它很简单,而且是跨平台的。安装命令:
shelljs
npm install [-g] shelljs
什么是shellJSShellJS是一个基于Node.js API的Unix shell命令的可移植(Windows/Linux/OS X)实现。您可以使用它来消除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
4条答案
按热度按时间euoag5mw1#
您可以使用nodejs的"child process"模块在nodejs中执行任何shell命令或脚本。让我举一个例子,我正在nodejs中运行一个shell脚本(hi.sh)。
"嗨,嘘"
在这里,当我运行nodejs文件时,它将执行shell文件,输出将是:
只要在
exec
回调中提到shell命令或shell脚本,就可以执行任何脚本。pftdvrlh2#
您可以使用shelljs module执行任何shell命令
2cmtqfgy3#
你可以去:
然后:
运行$SHELL中的命令。
还是走吧
不使用shell运行文件。
还是走吧
它与cp.exec()相同,但不查找$PATH。
你也可以去
使用node.js运行javascript文件,但在子进程中运行(对于大型程序)。
编辑
您可能还必须使用事件侦听器访问stdin和stdout。例如:
jecbmhm34#
另外,你也可以使用
shelljs
插件。它很简单,而且是跨平台的。安装命令:
什么是shellJS
ShellJS是一个基于Node.js API的Unix shell命令的可移植(Windows/Linux/OS X)实现。您可以使用它来消除shell脚本对Unix的依赖,同时仍然保留其熟悉而强大的命令。您还可以全局安装它,以便从Node项目之外运行它--告别那些粗糙的Bash脚本吧!
下面是它的工作原理示例:
此外,还可以从命令行使用: