【shell附加课】shell脚本调试方案详解
前言
最近小伙伴们的脚本写的越来越长,写的长了之后就会发现三个苦恼的事情:
- 上面定义了变量,后面不知道变量是什么意思了;
- 脚本需要一遍遍的调试很麻烦;
- 调试脚本只能一次次的运行,查看报错很麻烦。
首先要恭喜你,当你意识到这几个问题的时候,你的脚本level又提升了一个档次,这个时候你需要考虑脚本的规范和脚本的调试方法了。
今天我们就来看看脚本的一些规范和调试技巧
一. shell脚本开发规范
- 重视书写习惯; 比如我们写if循环,先写完骨架在开始添加内容。
比如我们要写if循环,先写下面的内容
#!/bin/bash
if [];then
fi
- 1
- 2
- 3
写引号或者括号也是,先写完() 然后在回到括号里写内容;
这样做有什么好处?
这样做的好处是,不会犯落下了半个括号,或者fi 忘记写的情况。
- 要锻炼自己的框架思维;
我们之前写学员管理系统,是按照先写完骨架,在写增加,然后写遍历这样的思维方式来写的,看上去很大的脚本,其实都是一个个小的框架。
框架思维好了,你的函数就会运用的好。
锻炼自己把复杂基本分段实现的能力,先实现一个小的功能在延伸,每个大的功能都是一个个小的功能组成的。
二. shell脚本调试技巧
我们之前已经学习过sh -x ,其实对于调试来讲我们还有很多方法
1. 使用echo +exit 命令断点调试
比如在我们写学员管理系统中,有一个判断学员名字是否在文件中的操作,有的同学使用grep查询出来后定义为变量,再和我们输入的名字做比较。
这个时候我们想判断一下变量是否有名字,就可以使用echo $变量名的方式,后面加exit退出。
为啥要退出?
避免被后面的信息干扰,让我们想要的结果更清晰一点。
2. 使用bash命令参数调优
bash
参数 | 作用 |
---|---|
-n | 不会执行改脚本,进查询脚本语法是否有问题,并给出错误提示 |
-v | 在执行脚本时,先输出脚本内容,然后在执行脚本,如果有错误也会提示 |
-x | 将执行结果及脚本内容都输出到屏幕上,可以看到哪一步没有执行成功 |
3. 使用 set 来调试脚本
[root@ecs-c13b diff]# cat b.sh
#!/bin/bash
set -x
a=1
echo $a
echo aaa
- 1
- 2
- 3
- 4
- 5
- 6
输出结果
[root@ecs-c13b diff]# bash b.sh
+ a=1
+ echo 1
1
+ echo aaa
aaa
- 1
- 2
- 3
- 4
- 5
- 6
可以看到set -x 和我们在脚本前加bash -x 的效果一样
set 还有个参数-e, 他的作用是,一旦发现脚本的传回值不为0,就立即退出shell,我们就可以判断哪里出现了问题。
总结
方法不是越多越好,掌握一两个调试的方法,能够满足日常工作的基本需求即可。
文章来源: zmedu.blog.csdn.net,作者:互联网老辛,版权归原作者所有,如需转载,请联系作者。
原文链接:zmedu.blog.csdn.net/article/details/108299573
- 点赞
- 收藏
- 关注作者
评论(0)