Tag: bash

将JSON转换为bash环境variables

我写了这个美丽的一段时间后,运行在服务器上,并将JSON环境variables转换为bash .env格式。 #!/usr/bin/env node var strings = [] process.stdin.resume() process.stdin.setEncoding('utf8') process.stdin.on('data', function(data) { var json = JSON.parse(data) for (var key in json) { var val = json[key] strings.push(key + '="' + val + '"') } }) process.stdin.on('end', function() { var output = strings.join('\n') process.stdout.write(output) }) 这可以做到没有节点,只是bash? 我无法在没有安装节点或没有指定正确的path的服务器上工作。

脚本parsing模板,然后生成作业dsl文件

我正在考虑使用nodejs,bash或python。 我想99%自动化我们的工作dsl groovy文件的build设。 所以现在,这是我打算做的。 我将创build一个模板文件 // example groovy file, not template job("somejobname") { stringParameters('var1', '', '') stringParameters('var2', '', '') stringParameters('var3', '', '') stringParameters('var4', '', '') stringParameters('var5', '', '') stringParameters('var6', '', '') } 现在用于我将用于dynamic构build上面的模板。 我将使用@@ SP @@只是一个例子 // job.template file job("somejobname") { @@SP@@ } 在我的nodejs,bash或python脚本中,它会读取另一个外部文件,如values.txt或values.json,无论如何。 // values.txt SP=['var1','var2','var3','var4','var5','var6'] // or values.json { SP: ['var1','var2','var3','var4','var5','var6'] } 一旦读取,这些值将被用来代替@@ […]

如何在Windows和Unix上运行npm sh脚本

我想运行一个sh脚本,通过npm scripts来检测我的npm版本。 我有以下脚本,它很酷: if [ $(npm -v | cut -c 1 | awk '{print $1\"<3\"}' | bc -l) != 0 ]; then echo '[ERROR] You need npm version @>=3\n' && false; fi 但是,当我在Windows上运行脚本时,这个脚本只能在* NIX上工作我得到一个错误: $(npm was unexpected at this time. 我想检测,如果我在Windows上运行的脚本,然后不执行脚本,我试过,但只能在* NIX: if [ 'uname -s' != CYGWIN* ]; then if [ $(npm -v | […]

apm(atom的包pipe理器)启动shell运行错误

我正在处理我的osx 10.11系统中的apm错误。 当我跑步 apm 在我的命令行中,由于错误的文件path导致错误: /usr/local/bin/apm: line 32: /Applications/Atom.app/Contents/Resources/app/apm/node_modules/.bin/node: No such file or directory 签出后,我发现:在apm shell(/Atom.app/Contents/Resources/app/apm/node_modules/.bin/apm)中,有一个while循环: while [ -L "$binDir" ] do binDir=`readlink "$binDir"` builtin cd "`dirname "$binDir"`" binDir=`basename "$binDir"` done 似乎这个循环只在我的osx系统上运行一次,而且在其他系统上运行两次,我所拥有的缺陷就是因为这个原因。

节点脚本如何在我当前的bash上下文(进程)中运行?

在bash你可以source或. 在当前的上下文中运行一些bash脚本。 所以,如果你有例如文件foo与alias bar='echo bam'在其中,当你运行它像 $ . foo 它会从文件foo中将这个别名发送到当前的上下文中。 我知道,如果我通常使用#!/usr/bin/env node第一行来运行节点脚本,那么这个脚本在子shell中运行,或者作为单独的进程运行。 我想避免这一点,并使节点脚本作用于我当前的bash进程(上下文)。 我怎样才能运行节点脚本,改变我当前的bash上下文? ps:任何例子都不错。 节点脚本只能改变我的目录,但它也必须发生在我当前的bash上下文中。 ps2:小问题:如果在节点中是不可能的(我很难相信这个),或者它非常复杂,那么在其他语言中是可能的吗? 像PHP,Java,Ruby(我不问C,因为它很明显:)如果是这样,请给我一些例子。

产生交互式进程并在NodeJS中退出

我试图完成(我认为)一个相当简单的事情,但找不到任何现有的答案,所以在这里。 我想在节点中模仿下面的bash脚本: #!/usr/bin/bash mysql 所以基本上就像在命令行input“mysql”一样。 到目前为止,我提出了以下几点: var spawn = require('child_process').spawn; var child = spawn('/usr/bin/mysql', [], {stdio: 'inherit', detached: true}); child.unref(); 这工作正常(呈现给我的MySQL提示符),但是当我键入一个命令它被发送到bash命令行不是MySQL。 我试过其他的stdio选项(pipe道,忽略)与标准输出,stderr等听众,但这让我尽可能悬空提示。 任何和所有build议表示赞赏!

下面的代码中db.createCollection会不会build立一个新的数据库?

我在Node工作区的server.js文件中有下面这段代码。 我的问题是,每次我从bash命令行运行我的server.js文件,我是否设置了一个名为polls的新集合? 或者MongoDb认识到集合已经存在? 什么时候我终止我的连接到Mongo,然后从命令行重新启动它? mongo.connect('mongodb://localhost:27017/url-shortener', function(err, newDb){ if(err){ throw new Error('Database failed to connect'); }else{ console.log('Successfully connected to MongoDb database'); } db = newDb; db.createCollection('polls', { autoIndexId: true }); });

为什么我无法评估.load在node.js中启动交互式脚本?

在node.js中,您可以传递参数-i以获取交互式控制台,然后传递-e来评估JavaScript语句。 我试过跑步: $ node -i -e '.load ./someScript.js' .load someScript.js; ^ SyntaxError: Unexpected token . at Object.exports.runInThisContext (vm.js:53:16) at Object.<anonymous> ([eval]-wrapper:6:22) at Module._compile (module.js:410:26) at node.js:578:27 at nextTickCallbackWith0Args (node.js:419:9) at process._tickCallback (node.js:348:13) 我得到一个错误,但如果我尝试从交互式节点提示运行相同的东西,它加载得很好; 即 > .load ./someScript.js 还有什么我需要做的做这个工作?

如何在特定的URL中启动Node.js?

当我在应用程序中更新(并testing)特定页面时,需要停止服务器,再次使用node server.js重新启动,切换到浏览器窗口,按F5并切换回terminal以查看输出。 这需要很多时间.. 🙂 有没有一种方法可以像这样启动Node: node server.js -url /my_page 所以我可以直接看到输出,就好像有人从他们的浏览器中打开页面? 我发现这个问题,但我想它包含在服务器代码,所以它也需要每次更新。 这是一个解决scheme,但我想知道是否有更快的方法来做到这一点。 谢谢, 编辑: 随着curl,我得到这个错误: $ node server.js & curl 'http://localhost:5000/my_page' [2] 12824 curl: (7) Failed to connect to localhost port 5000: Connection refused [1] Terminated node server.js $ Listening on port 5000 注意最后一行,是否在服务器启动之前执行curl ?

用sh / bash发送IPC消息给父进程(Node.js)

我有一个Node.js进程,这个进程分叉了一个shsubprocess来运行一个bash脚本。 像这样的东西: const cp = require('child_process'); const n = cp.spawn('sh',['foo.sh'], { stdio: ['ignore','ignore','ignore','ipc'] }); 在我的bash脚本(foo.sh)中,如何发送IPC消息回到Node.js父进程? 无法find如何做到这一点。 做更多的研究,看起来我会更接近IPC的内部。 有一件事可能会有帮助,如果我将父PID传递给bash脚本,那么也许我可以做些什么。