【shell附加课】shell脚本调试方案详解

举报
互联网老辛 发表于 2021/06/09 01:11:18 2021/06/09
【摘要】 文章目录 前言一. shell脚本开发规范二. shell脚本调试技巧1. 使用echo +exit 命令断点调试2. 使用bash命令参数调优3. 使用 set 来调试脚本 总结 前言 最近小伙伴们的脚本写的越来越长,写的长了之后就会发现三个苦恼的事情: 上面定义了变量,后面不知道变量是什么意思了;脚本需要一遍遍的调试很麻烦;调试脚本只能一...

前言

最近小伙伴们的脚本写的越来越长,写的长了之后就会发现三个苦恼的事情:

  1. 上面定义了变量,后面不知道变量是什么意思了;
  2. 脚本需要一遍遍的调试很麻烦;
  3. 调试脚本只能一次次的运行,查看报错很麻烦。

首先要恭喜你,当你意识到这几个问题的时候,你的脚本level又提升了一个档次,这个时候你需要考虑脚本的规范和脚本的调试方法了。

今天我们就来看看脚本的一些规范和调试技巧

一. shell脚本开发规范

  1. 重视书写习惯; 比如我们写if循环,先写完骨架在开始添加内容。
    比如我们要写if循环,先写下面的内容
#!/bin/bash
if [];then
fi

  
 
  • 1
  • 2
  • 3

写引号或者括号也是,先写完() 然后在回到括号里写内容;

这样做有什么好处?

这样做的好处是,不会犯落下了半个括号,或者fi 忘记写的情况。

  1. 要锻炼自己的框架思维;

我们之前写学员管理系统,是按照先写完骨架,在写增加,然后写遍历这样的思维方式来写的,看上去很大的脚本,其实都是一个个小的框架。

框架思维好了,你的函数就会运用的好。

锻炼自己把复杂基本分段实现的能力,先实现一个小的功能在延伸,每个大的功能都是一个个小的功能组成的。

二. 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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。