Linux shell调试

shell 脚本常用的调试方式有

1.echo在可可疑的地方跟踪了解变量的值,并且也可以了解后续脚本的动作。
2.用tee过滤器来检查临界点的进程和数据流


3.设置选项-n -v -x  常用

scriptname  为 脚本名字

1)sh -n scriptname 不会运行脚本,用来检查脚本中的语法错误。

    等同于把set -n和set -o -noexec 设置到脚本,注意有些语法错误还是不能被解析出来

脚本内容:

#!/bin/sh
echo debug shell
ehco #书写错误


执行:
[db10]:[/dsg10]$ sh -n test.sh

没有任何显示结果


2)sh -v scriptname 在执行一个脚本命令之前,打印这个命令.

    等同于在脚本中设置set -v,set -v verbose -n -v 可以一起使用,sh -vn scriptname可以打印出详细的语法检查

[db10]:[/dsg10]$ sh  -v  test.sh 
#!/bin/sh
echo debug shell
debug shell
ehco 
test.sh: line 3: ehco: command not found

 

3)sh -x scriptname 打印脚本的执行结果

  等同于脚本中设置 set -x,set -o -xtrace set -u 或 set -o nuunset设置在脚本中可以再没有声明的变量的地方,打印一个错误消息

[db10]:[/dsg10]$ vi test.sh 
set -o -xtrace
#!/bin/sh
set -x -u
echo debug shell
ehco                 #错误语法
echo ${VAR}          #未声明变量


[db10]:[/dsg10]$ sh test.sh 
+ echo debug shell
debug shell
+ ehco
test.sh: line 6: ehco: command not found   #错误提示
test.sh: line 9: VAR: unbound variable     #未声明的变量抛出来了


4.用assert函数在脚本的临界点上测试变量或者条件      
5.用变量$LINENO和内建命令caller
6.捕捉exit,脚本中then exit会触发0,即结束脚本本身,终结进程。这常用来捕捉exit命令做某事,比如强制打印变量值,



转载于:https://my.oschina.net/wolx/blog/317736

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值