作家
登录

JavaScript 用Node.js写Shell脚本[译]

作者: 来源:www.28hudong.com 2013-03-30 00:22:49 阅读 我要评论

访问参数 你可以通过process.argv来访问到命令行参数,它是一个包含下列内容的数组: [ nodeBinary, script, arg0, arg1, ... ] 也就是说,第一个参数是从process.argv[2]开始的,你可以像下面这样遍历所有的参数: 复制代码 代码如下: process.argv.slice(2).forEach(function (fileName) { ... }); 如果你想对参数做更复杂的处理,可以看一下Node.js模块nomnom和optimist.下面,我们会多次用到文件系统模块: 复制代码 代码如下: var fs = require('fs'); 读取一个文本文件 如果你的文件不是很大,你可以将整个文件全部读进内存,放到一个字符串中: 复制代码 代码如下: var text = fs.readFileSync(fileName, "utf8"); 然后,你可以分割这个文本,一行一行的处理. 复制代码 代码如下: text.split(/r?n/).forEach(function (line) { // ... }); 对于大的文件,你可以使用流来遍历所有的行.mtomis在Stack Overflow上给了一个解决方案. 写入一个文本文件 你可以通过字符串将完整的内容写入一个文件. fs.writeFileSync(fileName, str, 'utf8'); 或者你也可以以增量的方式把字符串写入到流中. 复制代码 代码如下: var out = fs.createWriteStream(fileName, { encoding: "utf8" }); out.write(str); out.end(); // 目前和destroy()和destroySoon()一样 跨平台考虑 决定行终止符. 解决1:读取一个已存在的文件到字符串中,搜索"rn",如果找不到就判定行终止符是"n". 复制代码 代码如下: var EOL = fileContents.indexOf("rn") >= 0 ? "rn" : "n"; 解决2:检测系统平台.所有的Windows平台都返回"win32",64位系统也是. 复制代码 代码如下: var EOL = (process.platform === 'win32' ? 'rn' : 'n') 处理paths 当处理文件系统路径时可以使用path模块.这样可以确保使用了正确的PATH分隔符(Unix上用"/",Windows上用""). 复制代码 代码如下: var path = require('path'); path.join(mydir, "foo"); 运行脚本 如果你的shell脚本名为myscript.js,那么你可以这样运行它: node myscript.js arg1 arg2 ... 在Unix上,你可以在脚本的第一行加上一句代码,告诉操作系统应该拿什么程序来解释这个脚本: #!/usr/bin/env node 你还必须给脚本赋予可执行的权限: chmod u+x myscript.js 现在脚本可以独立运行了: ./myscript.js arg1 arg2 ... 其他话题 输出到标准输出(stdout): console.log和浏览器中一样.console是一个全局对象,不是一个模块,也就不需要使用require()导入. 读取标准输入(stdin): process.stdin是一个readable stream.process是一个全局对象. 运行shell命令:通过child_process.exec().相关文章 Tip: load source from a file in the Node.js shell Execute code each time the Node.js REPL starts

  推荐阅读

  JavaScript模板入门介绍

比如要在一个列表中利用ajax插入一个li的时候,我会直接把数据跟html标签拼接成一句完整的html,然后插入到ul中。无论数据是从服务器端拿回的,或者是从用户的input输入中拿到的——无论哪种方法都是一样。 这个拼>>>详细阅读


本文标题:JavaScript 用Node.js写Shell脚本[译]

地址:http://www.17bianji.com/kaifa2/JS/23073.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)