有风塘主
发布于 2024-10-26 / 74 阅读
0
0

使用JavaScript语法编写Shell脚本

使用JavaScript语法编写Shell脚本

需求

Shell 是一个用 C 语言编写的程序,常常被运维人员用于linux服务器上的维护工作,也常被开发人员/运维人员用来写一些程序自动化、智能化的构建、打包、部署等方面的工作。
Shell脚本在Linux上运行时,可以直接运行linux命令,需要添加系统执行权限,因而具有比Node、Java等其他脚本更加底层的能力。
但是对于写过shell脚本的人来说,尤其是写前端、Java等偏应用型的开发人员来说,其语法规则、编码能力就不是那么友好了,且学习成本较高。
zx 因此诞生!

关于zx

zx是由Google 的前端程序员开源的基于 JavaScript 实现的 Shell 解释器,对 child_process 进行了默认包装,对参数进行了转译而且提供了合理的默认值。可以很方便的让我们使用前端熟悉的 JavaScript 语法来编写 Shell 脚本

安装zx

要求 Node.js 版本 >= 16.0.0

yarn add -g zx
// or
pnpm i -g zx
// or
npm i -g zx

脚本示例

#!/usr/bin/env zx

// 在mjs文件中,使用的是ES规范,可以在顶层直接使用 await
await $`cat package.json | grep name`

let branch = await $`git branch --show-current`
await $`dep deploy --branch=${branch}`

await Promise.all([
  $`sleep 1; echo 1`,
  $`sleep 2; echo 2`,
  $`sleep 3; echo 3`,
])

let name = 'foo bar'
await $`mkdir /tmp/${name}`

脚本运行示例

chmod +x ./zxShell.mjs
./zxShell.mjs
# or
zx ./zxShell.mjs

评论