日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

shell腳本是一個命令語言,面向的是操作系統執行。如果寫過shell腳本的話,應該體會過編寫過程的痛苦。因為shell并不是一個編程語言,并不支持常見的數組,JSON等數據結構,也不支持面向對象編程的開發方法,因此對開發人員很不友好。

 

目前針對這種情況,大家一般會用shell調用node執行JS腳本,真正的處理邏輯放在JS腳本中處理。現在谷歌推出了 ZX NPM包,它能夠用JS編寫shell腳本。

 

那如何使用呢?

 

1.全局安裝zx

npm install -g zx

安裝完后,在終端中輸入 zx 命令檢查安裝是否成功。

shell很難寫?快用JS寫shell腳本吧

 

2.創建一個簡單的腳本

新建zx腳本文件:test.mjs

#!/usr/bin/env zx
const branch = await $`git branch --show-current`
console.log(`Current branch: ${branch}`)

第一行是指定腳本的執行器。

$ 是內置的函數,能夠執行命令并配合 await 返回執行結果。其他的寫法都和JS毫無差別。

3.執行腳本

zx ./test.mjs

或者:

chmod +x ./test.mjs
./test.mjs

控制臺就會輸出當前的分支。

上面只是小試牛刀,zx 的強大遠不止如此。由于 zx 在內部實現了 Bash 的解釋器,所以可以執行全部的shell命令。另外 zx 還內置很多nodejs模塊,比如 fs, os,fetch等。所以可以直接在腳本中使用這些模塊。

另外作為TS編寫的庫,全部的JS語法都能夠支持。包括但不限于 數組,Promise,class等。

下面再舉一個例子:

let resp = await fetch('http://wttr.in')
if (resp.ok) {
  console.log(await resp.text())
}

let hosts = [...]
await Promise.all(hosts.map(host =>
  $`rsync -azP ./src ${host}:/var/www`  
))

try {
  await $`exit 1`
} catch (p) {
  console.log(`Exit code: ${p.exitCode}`)
  console.log(`Error: ${p.stderr}`)
}

 

總結一下,zx 的最大優點是結合了Bash和JAVAScript,解決了shell腳本復雜邏輯編程的問題。同時也讓對shell不熟悉的開發者也能用JS完成shell腳本的開發,而且更加靈活高效。

 

如果你還有更多問題,可以參考NPM倉庫 zx 包的介紹,或者訪問其github地址。

分享到:
標簽:腳本 shell
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定