1、Shell脚本的调试
1.1、学习脚本开发规范
1.2、好的编码习惯
2、常见脚本错误范例
2.1、if条件句缺少if结尾关键字
1 #!/bin/sh
2 read -p "pls input two num" num1 num2
3 if [ $num1 -lt $num2 ];then
4 echo "Yes,$num1 is less than $num2"
5 elif [ $num1 -gt $num2 ];then
6 echo "Yes,$num1 is gt than $num2"
7 else
8 echo "$num1 equal $num2"
if_debug-1.sh:行9: 语法错误: 未预期的文件结尾
2.2、循环结构中缺少关键字,如if缺少then、case缺少;;、while或for确定do或done
2.3中括号[]里用><比较、中括号两端没空格
2.4将整条代码块当一条命令执行时未添加``反向单引号
3、shell语法小结:
①、重视书写习惯,开发规范和开发制度,尽量减少脚本调试难度和次数,提升开发效率
②、shell基本语法要熟练,才能利用好脚本调试。
③、写脚本思路要清晰:
思考开发的框架,尽量模块化开发(第一部分、第二部、第三部...)分段实现。
思考实现框架:
编程模块化
打游戏通关的思想:函数1、函数2、Main()函数程序执行入口===>一般需要传参数时 Main $*
4、shell脚本调试技巧
4.1、windows系统下开发的脚本放到linux上执行报错


提示:只要脚本不是你写的或者windows下开发的脚本,你检查脚本明明没有问题,但就是执行出现错误,要想到执行dos2unix格式化一下脚本文件。
最好,每次写脚本都执行dos2unix格式化下,再执行脚本。
[root@localhost ~]# dos2unix while-debug-test.sh

4.2使用echo命令调试
echo命令是最有用的调试脚本工具之一。一般在可能出现问题的脚本重要逻辑处使用echo命令输出,然后exit 退出,查看输出结果是否正确,类似断点调试。

4.3、使用bash命令参数调试
[root@localhost ~]# sh [-nvx] test.sh
参数:
-n:不会执行该脚本,仅查询脚本语法是否有问题,并给出错误提示,该参数一般应用在脚本只能执行一次的情况下进行检查。
-v:在执行脚本时,先将脚本的内容输出到屏幕上然后执行脚本,如果有错误,也会给出错误提示
-x:执行脚本内容及输出显示到屏幕上,它会将脚本整个执行过程在屏幕输出,这个是对调试很有用的参数
sh参数-n的测试,范例:
[root@localhost ~]# sh -n if_debug-1.sh
if_debug-1.sh:行9: 语法错误: 未预期的文件结尾
4.4使用set命令调试部分脚本内容
set命令可辅助脚本调试。以下是set 命令常用的调试选项:
set -n 读命令但并不执行。
set -v 显示读取的所有行。
set -x显示所有命令及其参数。
提示:
1)同bash命令参数功能。
2)开启调试功能通过set -x 命令,而关闭调试功能通过set +x
优点:和bash -x相比,set -x可以缩小调试的作用域。

5、Shell脚本调试技巧小结:
1)、首先用dos2unix对脚本文件格式化
2)、直接执行脚本根据报错来调试,有时报错不准确。
3)、sh -x 调试整个脚本,显示执行过程(大海捞针困难)。
4)、set -x 和set +x调试部分脚本(脚本中设置)主要作用是缩小调试范围
5)、echo输出变量及相关内容,然后紧跟着exit退出,不执行后面的程序,逐步跟踪脚本,对逻辑错误比较好用。
6)、最关键的是语法熟练、编码习惯、编程思想,减轻调试负担,提供效率。
6、规范代码树

超过200行的互相调用的脚本代码树:
· bin目录存放执行脚本
· conf目录存放定义的变量或配置文件的脚本
· func存放函数脚本
浙公网安备 33010602011771号