语法检查
第一个最简单的方法就是利用工具对脚本进行检查,这一部分已经在《有了这个神器,再也不怕shell写不对了》中介绍过了,它能最大程度地发现shell脚本中存在的语法错误,如果你还不知道,建议你绝对不要错过。
而为了保证脚本健壮可靠,那么就需要保证脚本在一些特殊的情况及早出现,避免漏网之鱼。来看看有哪些可行的技巧。
脚本失败时即退出
可以在脚本的开头设置如下:
- set -e
举个例子:
- #!/bin/bash
- set -e
- lp #这里运行会出错
- date
这种情况下,运行一旦出错就会退出,不放过一个问题:
- $ ./test.sh
- lp: Error – no default destination available.
当然了,这也有不好的地方,有时候命令执行本来就可能是失败的,你还是希望它继续,可以临时加上|| true:
- #!/bin/bash
- set -e
- lp || true
- date
不过个人觉得这样的设置用处不是特别大,因为很多时候就是需要处理不同的错误情况,而这样只能要么遇到错误退出,要么认为正确,导致无法走到异常分支。
通过set +e设置回来:
- set -e
- #command
- set +e
- #other command
打印脚本执行过程
调试阶段,你可能想知道整个过程是执行了哪些命令,每条命令都具体执行了什么,可以利用下面的方式执行:
- sh -x test.sh
或者,和上面类似,在开头加上set -x:
- //来源:公众号【编程珠玑】
- //作者:守望先生
- #!/bin/bashset -x
- if [ $# -lt 1 ]
- then
- echo "no para"
- else
- echo "para 1 $1"
- fi
执行时,输出如下:
- + [ 0 -le 1 ]+ echo no parano para
前面带+的内容就是命令实际执行的,你可以看到比较条件是什么,变量被展开成了具体内容,走到了哪个分支,非常清楚。