shell脚本的排错及问题判断
脚本排错及问题判断
[root@localhost ~]#sh [-nvx] 脚本文件
选项与参数∶
-n:不执行脚本,仅查询语法的问题;
-v:在执行脚本前,先将脚本的内容输出到屏幕上;
-x:将使用到的脚本内容(执行过程)显示到屏幕上
1.语法查询
从1到100的整数和的脚本文件
#!/bin/bash
sum=0
i=0
while [ ${i} -ne 100 ]
do
i=$[$i+1]
sum=$[$sum+$i]
done
echo "运算结果是:$sum"
下面我故意把最后的引号改成中文符号,验证一下
且返回值为非0
[root@localhost ~]#sh -n sum1.sh
sum1.sh:行9: 寻找匹配的 `"' 是遇到了未预期的文件结束符
sum1.sh:行10: 语法错误: 未预期的文件结尾
[root@localhost ~]#echo $?
2
然后我们再更正字符,再次测试脚本有无语法问题
2.执行过程查看
例2:
从1到用户输入值的累加整数和,利用sh -x 脚本文件 来查看执行过程
- 其脚本文件为
#!/bin/bash
read -p "请输入整数值(1-100):" nu
sum=0
i=0
while [ ${i} -ne ${nu} ]
do
i=$[$i+1]
sum=$[sum+i]
done
echo "从1到${nu}的运算结果是:$sum"
- 查看执行过程
3.也可用两个选项sh -vx 脚本文件
来查看脚本文件内容的同时,查看脚本的执行过程,思路会更明朗!
这里我用一个函数脚本来验证,如下
#!/bin/bash #所用shell
function db1 { #db1是函数名
read -p "请输入:" value #value是变量名
return $[$value * 2] #返回值取所输入的变量名的值和2的乘积的结果值
}
db1 #调用函数
echo $? #输出返回值(输出上个命令执行结果的返回值)
4.命令模式下输入 :set nu 回车查看行号
当脚本行数特别多时虽然指定了哪行出错,但有时人眼根本数不过来,就需要命令模式下输入英文字符冒号“:”进入末行模式,然后输入set nu命令回车列出脚本内容对应的行数