shell编程第七节--shell编程规范与调试

shell快讲第一节--shell基础
shell快讲第二节--管道与重定向
shell快讲第三节--正则表达式
shell快讲第四节--sed与awk
shell快讲第五节--shell语法基础
shell快讲第六节--shell函数编程
shell快讲第七节--shell编程规范与调试
shell快讲第八节--shell编程实战

shell编程规范

1、缩进

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


shell编程第七节--shell编程规范与调试_第1张图片
规范代码

shell编程第七节--shell编程规范与调试_第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语法(四)

你可能感兴趣的:(shell编程第七节--shell编程规范与调试)