第八节 shell编程规范与调试

第八节 shell编程规范与调试

shell编程规范

1、缩进

​ shell其实不需要缩进,但是我们在写代码的时候尽量使用缩进来描述一个代码块,最基本的就是函数,if 、for、while等,良好的缩进有助于阅读,如下两段代码都是可以执行,但是看下下面2张图的阅读感受:图1图2

2、编写规范

​ shell脚本的注释符号是#我们尽量的利用这个规则帮助别人有效的描述脚本的一些信息,一般我们认为一个OK的编写规范应该保护如下信息:

# author:作者名
# date :2019.03.14 日期
# scriptfile.sh 脚本名字
# doc:必要的说明性信息
# 必要的注释信息
#######{}风格##########
function name()
{
    commands
	...
}

function name() { #注意空格
    commands
    ...
}
shell调试

在我所知道的语言中,shell调试是最困难的,首先是错误提示过于模糊,基本上看着报错也不能有效的理解,往往就因为多一个空格少一个空格导致各种异常报错,肉眼也找不到原因,再来看一个脚本,这个脚本有两个错误的地方,看看能不能肉眼发现问题,如下脚本是两处语法错误

#!/bin/bash
var=0
while :
if [ $var -gt 3]
then
	break
fi
let "var=var+1" #这里类似var=$[var+1]
echo $var
done

####bash -x,bash -v

​ shell还是有一些调试手段的,这里我们就用bash自带的调试手段,有几种使用方式

1.在调试脚本的时候开启debug

>>>bash -x shell.sh

我们可以在如下脚本中尝试:

#!/bin/bash
count=1
MAX=5
while [ "$SECONDS" -le "$MAX" ] #$SECONDS 是shell内置的变量,当当前脚本执行时间大于5秒,结束执行
do
        echo "This is the $count time to sleep."
        count=$count+1#这种写法不鼓励 let "count=$count+1"
        sleep 2
done
echo "The running time of this script is $SECONDS"

2.在脚本文件首行开启debug

#!/bin/bash -x
count=1
MAX=5
while [ "$SECONDS" -le "$MAX" ] #$SECONDS 是shell内置的变量,当当前脚本执行时间大于5秒,结束执行
do
        echo "This is the $count time to sleep."
        count=$count+1#这种写法不鼓励 let "count=$count+1"
        sleep 2
done
echo "The running time of this script is $SECONDS"

3.使用set开启Debug

#!/bin/bash
read -p "please input two number:" a b
set -x    #开启调试
if (($a < $b))
  then
    echo "$a<$b"
elif (($a == $b))
  then
    echo "$a=$b"
else
    echo "$a>$b"
fi
set +x    #结束调试,只针对set -x 和set +x 之间的脚本进行调试
echo "完美"

4.-v 显示脚本的所有行

>>>bash -v test.sh

5.-n 检查脚本的语法

>>>bash -n test.sh

6.bashdb

第三方调试工具,使用类似gdb

shell编程那些坑

shell语法虽然在运维领域依然有强大的使用场景,但是玩的多了的运维人员很多都转python了,shell的坑着实也是有点多的,当然我在运维中用的少,说的没有说服力,所有我找了一个做运维的作者的文章,写的比较多,大家可以看下相关文章

shell编程需要避免的坑之shell语法(一)

shell编程需要避免的坑之shell语法(二)

shell编程需要避免的坑之shell语法(三)

shell编程需要避免的坑之shell语法(四)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫慌搞安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值