Node中如何寫Shell腳本?以下這篇文章跟大家介紹一下使用zx函式庫在Node中寫Shell腳本的方法,希望對大家有幫助!
Shell 腳本
#建立一個shell 腳本,也就是一個由shell 執行的腳本,例如Bash或zsh,是用來實現自動化重複任務的常見方法,特別是對於維運人員最熟悉了。對於前端工程師來說使用 Node.js 編寫 shell 腳本是個不錯的選擇,因為它提供了許多核心模組,並且可以導入前端其他的腳本庫,降低學習成本。
如果不借助 zx.js
想嘗試編寫一個在 Node.js 下運行的 shell 腳本,可能會發現它並不像希望的那樣流暢。需要為子進程編寫特殊處理,注意轉義命令列參數,然後使用標準輸出stdout
和標準錯誤stderr
,它不是特別直觀,並且使用shell 腳本編寫變得非常笨拙。
Bash shell 腳本語言是編寫shell
腳本的最佳選擇,不需要編寫程式碼來處理子進程,並且它具有用於處理stdout
和stderr
內建的語言特性。但是用Bash編寫 shell
腳本也不是那麼容易,語法可能相當混亂,使得實現邏輯或處理提示使用者輸入之類的事情變得不那麼方便。
Google 的 zx.js
函式庫有助於使用 Node.js 有效率且愉快地編寫 shell
腳本。
官方網站:https://github.com/google/zx#-zx
#安裝
對於前端工程師來說,安裝一個依賴是家常便飯,運行以下腳本:
npm install zx
#使用
##Google 的zx.js 提供了封裝子進程的建立以及從這些進程處理
stdout 和
stderr 的函數。以下將使用的主要函數是
$ 函數,使用
zx.js 規定腳本寫入副檔名為
.mjs 的檔案中,以便能夠在頂層使用
await。如果習慣於
.js 副檔名,請將腳本包裝在類似
void async function () {...}() 中。
.mjs,每個
.mjs 檔案都會將以下程式碼當作開頭:
#! /usr/bin/env node
shell 腳本中
ls 的功能,建立檔案
ls.mjs ,完整程式碼如下:
#! /usr/bin/env node import { $ } from "zx"; $.verbose = false; const output = (await $`ls`).stdout.trim(); console.log(output);
shell 腳本檔案一樣,需要將其轉換為可執行檔:
chmod +x ./ls.mjs
shell 腳本,執行:
./ls.mjs
zx.js 也提供了其他實用函數來簡化shell 腳本編寫,例如:
cd():允許更改目前的工作目錄
question():Node.js 的readline 模組的包裝器,可以直接提示使用者輸入。
#! /usr/bin/env node import { $, cd } from "zx"; $.verbose = false; // 默认为true,以详细模式运行 const output = (await $`ls`).stdout.trim(); console.log(output); const dirName = "zx-mkdir-tmp"; await $`mkdir ${dirName}`; // 创建目录 cd(`./${dirName}`); const pwdOutput = (await $`pwd`).stdout.trim(); console.log(pwdOutput); // zx-mkdir-tmp
zx.js 提供的實用功能外,它還提供了幾個流行的腳本庫,例如:
以上是一文聊聊在Nodejs中怎麼用 zx函式庫 寫 Shell 腳本的詳細內容。更多資訊請關注PHP中文網其他相關文章!