這裡介紹如何使用 Node.js 來開發 Linux 系統用的工具程式,並且提供各種範例程式讓初學者參考。

Node.js 除了最為網頁伺服器之外,也可以用來開發系統用的小工具程式,比起使用傳統的 Bash 語法,JavaScript 應該會讓一般人更容易上手,而且執行效能也很不錯,尤其在牽涉到大量的 I/O 的時候,更能凸顯 Node.js 非同步的效能優勢。

Hello World

首先來看一下使用 Node.js 的 Hello World 程式:

#!/usr/bin/env node
console.log('Hello, World.');

第一行是以 env 來指定直譯器的位置,而第二行是輸出字串到螢幕上。

我們將這個程式儲存成 hello 這個檔案,而要讓它可以正常在 Linux 中執行,記得要開啟執行權限:

chmod +x hello

接著就可以執行它了:

./hello

輸出為:

Hello, World.

命令列參數

一般的指令通常都會附帶一些參數讓使用者設定各種選項,在 Node.js 的環境中,我們可以從 process.argv 這個變數取得從命令列所傳入的參數,我們可以寫一小程式來實際看一下這個變數的值:

#!/usr/bin/env node
console.log(process.argv);

架設我們將這個程式儲存為 demo1,設定好執行權限後,接著執行:

./demo1 --gtwang -a -b

輸出為

[ '/usr/local/bin/node',
  '/Users/seal/tmp/demo1',
  '--gtwang',
  '-a',
  '-b' ]

process.argv 的第一個元素是 node 執行檔的位置,而第二個則是目前執行的指令稿位置,第三個之後就是命令列所指定的參數,如果只需要參數的資料,可以用 slice 將前兩個沒有用的元素去掉:

var args = process.argv.slice(2);

這樣 args 就只會包含單純參數的部分。

程式傳回值

在開發 UNIX/Linux 系統的程式時,應該同時要注意程式離開時的傳回值,標準的指令在執行成功時會傳回 0,如果出現錯誤,則會傳回非 0 的值,而在 Node.js 的環境中,在程式結束的時候,我們可以用這樣的方式回傳指定的數值:

if (error) {
  // 如果出現錯誤
  process.exit(1);
} else {
  // 如果正常結束
  process.exit(0);
}