NodeJS 研究筆記 命令列處理

2021-07-10 23:40:55 字數 1317 閱讀 8377

在啟動node程式時,我們希望能在命令列啟動時,傳入引數,node程式根據輸入的命令引數,執行相應的處理流程。

在node程式中,使用process.argv 獲取命令列輸入引數。process.argv 是乙個陣列,用於存放從命令列傳入的引數。其類似c語言main 函式中的char* argv.

假定我們在控制台輸入 node argument.js –r arguments.js . 那麼程式

argument.js 啟動後, process.argv 陣列中就就儲存了以下幾個字串資訊:

process.argv[0] = 「node」, process.argv [1]= 「argument.js」, process.argv [2] = 「-r」

process.argv[3] = 「argument.js」. 由於引數陣列的前兩個儲存的是字串」node」和源**檔名,要想獲得有效的輸入引數,我們一般會從process.argv[2] 開始處理。

舉個例子,arguments.js 的**內容如下:

var args = ;

function displayhelp()

function readfile(file) );

stream.pipe(process.stdout);

}else

} if (process.argv.length > 0)

});}

args 物件儲存了對應引數要執行的對應函式,例如輸入引數是 -r 那麼執行readfile 函式, 如果輸入引數-h 則執行displayhelp 函式。 readfile 函式被呼叫時,傳入的引數是要讀取的檔名。通過node 的檔案系統模組 fs 所提供的介面呼叫createreadstream, 將指定檔名的檔案內容讀入形成輸入流物件,然後再通過輸入流物件的pipe函式,將輸入流中的所有資料內容,重定向到標準輸出,其實也就是輸出到控制台。

在末尾的if 判斷中,先看看是否有輸入引數需要解析,如果有,那麼process.argv.length 大於0. 接著檢視引數陣列中的每個元素的內容。看看是否有程式需要處理的-r 或 -h  引數,如果有,那麼從args物件中,獲取相應引數的響應函式,-r 或 -h 後面的引數,則作為響應函式的輸入引數。如果我們輸入的命令列引數如下:

node argument.js -r argument.js

readfile("argument.js")

程式執行的結果是,將argument.js的內容輸出的控制台:

命令列xml處理 命令列XML處理

命令列xml處理 就像我不願說的那樣,xml工具還沒有達到類似unix的命令列中可用的文字實用程式的便利程度。對於面向行的,空格或逗號分隔的文字檔案,使用sed,grep,xargs,wc,cut,pipe和短殼指令碼的巧妙組合可以完成的工作非常令人驚訝。我認為,xml並不是天生就可以抵抗平面文字檔...

核心命令列處理

清單5 5是語法乏味的定義。回想 清單5 4,我們最初所呼叫的 setup巨集的形式如下 setup console console setup 經過稍稍簡化,編譯器在巨集擴充套件後,其預處理器產生如下結果 static char setup str console setup initdata c...

命令列引數處理

url url include include include include include struct student optsting是選項引數組成的字串,字元後跟乙個冒號,表明該選項要求有引數。static const char optstring i n h?option結構稱為長選項表...