04 调试和前端集成
调试的方法
- 普通log,使用echo、printf
- 使用set命令,并配置相应标志位(见下表)
- vscode debug插件
set 配置 | 作用 | 补充 |
---|---|---|
-u | 遇到不存在的变量就会报错,并停止执行。 | -o nounset |
-x | 运行结果之前,先输出执行的那一行命令。 | -o xtrace |
-e | 只要发生错误,就终止执行 | -o errexit |
-o pipefail | 管道符链接的,只要一个子命令失败整个管道命令就失败,脚本就会终止执行。 |
#! /bin/bash
#一般在最前面就进行配置
set -uxe -o pipefail
echo "hello world"
Vscode插件配置
-
shellman:代码提示和自动补全
-
shellcheck:代码语法校验
-
shell-format:代码格式化(类似前端的 ESLint 和 Prettier.js)
-
Bash Debug:支持单步调试
-
安装vscode插件
-
编写 launch.json 文件
-
升级bash到 4.x 以上版本
# 1. 安装最新版本 bash brew install bash # 2. 查看安装路径 which -a bash # 3. 将新版本 bash 路径加入 PATH PATH="/usr/local/bin/bash:$PATH" # 4. 配置 vscode launch.json 启动文件 { "version": "0.2.0", "configurations": [ { "type": "bashdb", "request": "launch", "name": "Bash-Debug (simplest configuration)", "cwd": "${workspaceFolder}", "program": "debug.sh" } ] }
-
前端集成
-
node中通过exec、spawn调用shell命令
-
shell脚本中调用node命令
-
借助 zx 等库进行 javascript、shell script 的融合
- 借助 shell 完成系统操作,文件io、内存、磁盘系统状态查看
- 借助 nodejs 完成应用层能力,网络io、计算等
【参考内容】
[1] Shell脚本和编程
话说,写惯了 JavaScript 和 Java,感觉 Shell 这种没有花括号界定代码块的语法看起来好别扭,像 python 似的,分析起来也很费眼。。。