顯示具有 shell 標籤的文章。 顯示所有文章
顯示具有 shell 標籤的文章。 顯示所有文章

2012年12月21日 星期五

在Bash中混用Node.js程式

一般使用Node.js寫CLI或是使用Bash寫Server端腳本,都是單獨使用
頂多把JS包成完整的指令來使用...
但是,其實您可以透過node -e的方式來動態將Bash的參數輸入Node.js...
下面這段程式只是demo怎麼把Bash中的參數傳入Node.js中做執行,而且,不用再另外開一個JS檔案...

檔案:[test.sh]
#!/bin/bash                                                                                                                                                                                            
export UNAME=`uname -a`
node -e "
  var uname = '$UNAME';
  var arr = uname.split(' ');
  for(var i = 0 ; i< arr.length ; i++){
    console.log(arr[i])
  }
"

執行:
# bash test.sh
 
以上,簡單的程式可以混用Bash與Node.js :D

使用Node接收Shell pipe資料做處理

撰寫command line程式時候,常常需要處理pipe的問題
而Node.js具備命令列執行的特色,可以作為腳本語言的撰寫工具
但是,如何在Node.js處理Shell pipe過來的資料呢?
答案是使用process.openStdin()...
下面是範例片段:

程式碼:[test.js]
#!/usr/bin/env node
var buffer = '';
var stdin = process.openStdin();
stdin.setEncoding('utf8');
stdin.on('data', function (chunk) {
    buffer += chunk;
});
stdin.on('end', function () {
  console.log(buffer);
});

修改執行權限:

# chmod u+x test.js

測試
# echo HELLO | ./test.js

結果... 自己試試 :D