Shell - Shell脚本调试方法
Shell脚本调试选项
Shell本身提供一些调试方法选项:
- -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。
- -v,一边执行脚本,一边将执行过的脚本命令打印到标准输出。
- -x,提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。
使用这些选项有三种方法(注意:避免几种调试选项混用)
- 1.在命令行提供参数:
sh -x script.sh
或者bash -n script.sh
- 2.脚本开头提供参数:
#!/bin/sh -x
或者#!/bin/bash -x
- 3.在脚本中用set命令启用或者禁用参数,其中
set -x
表示启用,set +x
表示禁用
set命令的详细说明
Bash 官网文档
- bash https://www.gnu.org/software/bash/
- Bash-Reference-Manual https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html
Shell脚本编写及调试工具
ShellCheck
- http://www.shellcheck.net/
- 是一个Shell脚本分析工具,可以为bash/sh shell脚本提出警告和建议。
- GitHub:https://github.com/koalaman/shellcheck
ExplainShell
- https://www.explainshell.com/
- write down a command-line to see the help text that matches each argument
time命令
- 通过 time 命令可以统计执行命令或脚本的耗时(CPU的使用情况)
- time命令最常用的使用方式:
time <script.sh/command>
$ time date # 显示执行date命令的耗时
Wed Feb 1 18:08:51 2016
real 0m0.101s # 实际使用时间(real time)
user 0m0.015s # 用户态使用时间(the process spent in user mode)
sys 0m0.031s # 内核态使用时间(the process spent in kernel mode)
VS Code 插件
VS Code - Bash Debug
- This is a SIMPLE bashdb debugger frontend. Useful for learning bash shell usage and writing simple scripts.
- https://marketplace.visualstudio.com/items?itemName=rogalmic.bash-debug
ShellCheck 语法错误检查
shellman 语法提示
shell-format 内容格式化
- 支持shell脚本文件和dockerfile的内容格式化,
- 鼠标右键点击格式化文档或者快捷键(Alt+Shift+F)
- https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format
- 需下载和配置依赖shfmt https://github.com/mvdan/sh/releases
参考信息
- shellcheck 帮助你写出更好的脚本
- Bash脚本debug攻略
- Shell脚本调试技术
- Linux Shell脚本调试的四种办法
- 如何在Linux中启用Shell脚本的调试模式
- 如何在Linux或者UNIX下调试Bash Shell脚本
行动是绝望的解药!
欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少数内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!
以所舍,求所得,有所获,方所成。