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

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

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

shell腳本是一個命令語言,面向的是操作系統(tǒng)執(zhí)行。如果寫過shell腳本的話,應(yīng)該體會過編寫過程的痛苦。因為shell并不是一個編程語言,并不支持常見的數(shù)組,JSON等數(shù)據(jù)結(jié)構(gòu),也不支持面向?qū)ο缶幊痰拈_發(fā)方法,因此對開發(fā)人員很不友好。

 

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

 

那如何使用呢?

 

1.全局安裝zx

npm install -g zx

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

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

 

2.創(chuàng)建一個簡單的腳本

新建zx腳本文件:test.mjs

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

第一行是指定腳本的執(zhí)行器。

$ 是內(nèi)置的函數(shù),能夠執(zhí)行命令并配合 await 返回執(zhí)行結(jié)果。其他的寫法都和JS毫無差別。

3.執(zhí)行腳本

zx ./test.mjs

或者:

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

控制臺就會輸出當(dāng)前的分支。

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

另外作為TS編寫的庫,全部的JS語法都能夠支持。包括但不限于 數(shù)組,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}`)
}

 

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

 

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

分享到:
標(biāo)簽:腳本 shell
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

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

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定