教你写出健壮优秀的shell脚本!

语法检查

第一个最简单的方法就是利用工具对脚本进行检查,这一部分已经在《有了这个神器,再也不怕shell写不对了》中介绍过了,它能最大程度地发现shell脚本中存在的语法错误,如果你还不知道,建议你绝对不要错过。

而为了保证脚本健壮可靠,那么就需要保证脚本在一些特殊的情况及早出现,避免漏网之鱼。来看看有哪些可行的技巧。

脚本失败时即退出

可以在脚本的开头设置如下:


  1. set -e 

举个例子:


  1. #!/bin/bash
  2. set -e
  3. lp #这里运行会出错
  4. date 

这种情况下,运行一旦出错就会退出,不放过一个问题:


  1. $ ./test.sh
  2. lp: Error – no default destination available. 

当然了,这也有不好的地方,有时候命令执行本来就可能是失败的,你还是希望它继续,可以临时加上|| true:


  1. #!/bin/bash
  2. set -e
  3. lp || true 
  4. date 

不过个人觉得这样的设置用处不是特别大,因为很多时候就是需要处理不同的错误情况,而这样只能要么遇到错误退出,要么认为正确,导致无法走到异常分支。

通过set +e设置回来:


  1. set -e
  2. #command
  3. set +e
  4. #other command 

打印脚本执行过程

调试阶段,你可能想知道整个过程是执行了哪些命令,每条命令都具体执行了什么,可以利用下面的方式执行:


  1. sh -x test.sh 

或者,和上面类似,在开头加上set -x:


  1. //来源:公众号【编程珠玑】
  2. //作者:守望先生
  3. #!/bin/bashset -x
  4. if [ $# -lt 1 ]
  5. then 
  6. echo "no para"
  7. else 
  8. echo "para 1 $1"
  9. fi 

执行时,输出如下:


  1. + [ 0 -le 1 ]+ echo no parano para 

前面带+的内容就是命令实际执行的,你可以看到比较条件是什么,变量被展开成了具体内容,走到了哪个分支,非常清楚。

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章