Shell脚本调试方法
2017-03-05 10:54
369 查看
Shell脚本调试的主要工作是发现引发脚本报错的原因以及在脚本代码中定位发生错误的行,使程序按预期的逻辑完成工作。下面介绍几种主要的方法。
参数说明:
使用方法:
(1)检查脚本语法是否存在错误
(2)检查shell代码命令执行和变量输出情况
执行结果输出如下:
如果要调试输出所有代码,可以在代码开头处添加set -x。效果等同于shell -xv myScript.sh
1、使用zypper安装
2、use OneClickInstall - https://software.opensuse.org/package/ShellCheck
参考链接:
shellcheck官网:https://www.shellcheck.net/
shellcheck github:https://github.com/koalaman/shellcheck
1、sh脚本调试选项
语法:sh [-n] [-x] [-v] Script.sh参数说明:
-n: 检查shell脚本中是否存在语法错误。只读取shell脚本,但不执行。 -x:提供跟踪执行信息,将执行的每一条命令、每一个变量的值和结果一次打印出来 -v:一边执行脚本,一边将执行过的脚本命令打印到标准错误输出。
使用方法:
(1)检查脚本语法是否存在错误
$ sh -n Myscript.sh
(2)检查shell代码命令执行和变量输出情况
$ sh -xv Myscript.sh #!/bin/bash num1=20 + num1=20 num2=15 + num2=15 if [ "${num1}" -lt "${num2}" ];then echo "${num1} is less than ${num2}" else echo "${num1} is greater than ${num2}" fi + '[' 20 -lt 15 ']' + echo '20 is greater than 15' 20 is greater than 15
2、echo/printf输出调试方法
在认为可能有问题的代码前后使用echo/printf打印出变量输出情况。特别是变量在用作判断条件情况。#!/bin/bash #echo "The variable num equal:$num" if [ $num -eq 5 ];then echo "The number equal to 5" #假设这条语句没有输出,就把变量num值打出来看看 else echo "The number not equal to 5" fi
3、set -x调试方法
shell的执行选项除了可以在启动shell时指定外,也可以在脚本中用set命令来指定。 "set -参数"表示启用某选项,"set +参数"表示关闭某选项。有时候我们并不需要在启动时用"-x"选项来跟踪所有的命令行,这时我们可以在脚本中使用set命令,如以下脚本片段所示:#!/bin/bash set -x # #启动"-x"选项 要跟踪的程序段 num=15 if [ $num -eq 5 ];then echo "The number equal to 5" else echo "The number not equal to 5" fi set +x #关闭"-x"选项
执行结果输出如下:
$ ./Myscript.sh + num=15 + '[' 15 -eq 5 ']' + echo 'The number not equal to 5' The number not equal to 5 + set +x
如果要调试输出所有代码,可以在代码开头处添加set -x。效果等同于shell -xv myScript.sh
4、删减代码方法
这种方法通常适用于使用上述两种方法还是定位不出问题的情况,因为有些报错确实很不明显,在代码量太多的情况下又不好调试。可以尝试删除一部分代码,缩小代码定位范围。反过来说明,代码量越少的情况下调试效率越高。5、shellcheck代码静态检查工具
shellcheck工具个人用过确实挺好用的。但是在公司外没有找到一个可执行的shellcheck工具。源文件编译安装需要cabal,我在我的SuSE系统上没装起来。查阅了些资料,看到过如下两种方式安装成功的。大家可以在自己的环境试试。1、使用zypper安装
Linux:~ #zypper install shellcheck
2、use OneClickInstall - https://software.opensuse.org/package/ShellCheck
参考链接:
shellcheck官网:https://www.shellcheck.net/
shellcheck github:https://github.com/koalaman/shellcheck
相关文章推荐
- shell脚本里面一个很经典的调试方法(原创)
- 用内置变量调试shell脚本的方法
- Shell - Shell脚本调试方法
- Linux - Shell脚本调试方法
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
- shell脚本调试方法
- shell脚本调试方法
- Shell脚本调试方法
- shell脚本调试方法
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
- Shell脚本的调试方法
- Shell—启用Shell脚本调试模式的方法
- shell脚本调试方法
- shell脚本调试方法
- Shell脚本调试方法 Shell脚本执行的过程
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
- shell脚本调试方法
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法
- shell脚本里面一个很经典的调试方法
- Shell脚本的调试方法