一、脚本中常见错误:语法错误、逻辑错误
二、脚本调试技术
1、使用dos2unix命令处理在windows下开发的脚本
2、使用echo命令调试
3、使用bash命令参数调试
[root@ks ~]# sh [-nvx] nginx.sh
参数说明:
-n:不会执行该脚本,仅查询脚本语法是否有问题,并给出错误提示
-v:在执行脚本时,先将脚本的内容输出到屏幕上,然后执行脚本。如果有错误,也会给出错误提示。
-x:将执行的脚本内容及输出显示到屏幕上
,这是对调试很有用的参数
[root@manager day6]# sh -n 1.sh
[root@manager day6]# sh -v 1.sh
#!/bin/bash
#*************************************************************
#Author: pyy
#Date: 2020-06-25
#FileName: 1.sh
#*************************************************************
i=1
#while [ $i -le 10 ]
#while ((i<=10))
until ((i>10))
do
let sum+=i
let i++
done
echo "1+2+.....+10=$sum"
1+2+.....+10=55
[root@manager day6]# sh -x 1.sh
+ i=1
+ (( i>10 ))
+ let sum+=i
+ let i++
+ (( i>10 ))
+ let sum+=i
+ let i++
+ (( i>10 ))
+ let sum+=i
+ let i++
+ (( i>10 ))
+ let sum+=i
+ let i++
+ (( i>10 ))
+ let sum+=i
+ let i++
+ (( i>10 ))
+ let sum+=i
+ let i++
+ (( i>10 ))
+ let sum+=i
+ let i++
+ (( i>10 ))
+ let sum+=i
+ let i++
+ (( i>10 ))
+ let sum+=i
+ let i++
+ (( i>10 ))
+ let sum+=i
+ let i++
+ (( i>10 ))
+ echo 1+2+.....+10=55
1+2+.....+10=55
4、使用set命令调试部分脚本内容
set命令常用的调试选项:
set -n :读取命令单并不执行
set -v :显示读取的所有行
set -x :显示所有命令及其参数
提示:通过set -x 命令开启调试功能,而通过set +x 关闭调试功能
。
set命令最大优点是,和bash -x相比,set -x可以缩小调试的作用域
[root@manager day4]# cat test1.sh
#!/bin/bash
#*************************************************************
#Author: pyy
#Date: 2020-06-14
#FileName: test1.sh
#*************************************************************
#给定一个用户,判断其UID与GID是否一样,如果一样,就显示该用户为“good guy” 否则显示为"bad guy"
read -p "请输入一个用户名:" user_name
#开启调试功能
set -x
if id $user_name &>/dev/null
then
if [ $(id -u $user_name) -eq $(id -g $user_name) ]
then
echo "good guy"
else
echo "bod guy"
fi
else
echo "$user_name is not exists"
fi
#关闭调试功能
set +x
[root@manager day4]# sh test1.sh
请输入一个用户名:centos
+ id centos
++ id -u centos
++ id -g centos
+ '[' 1000 -eq 1000 ']'
+ echo 'good guy'
good guy
+ set +x