拦截出口

时间:2012-07-17 11:38:42

标签: linux bash shell

我正在为bash脚本编写单元测试,并想检查脚本是否因错误而退出(我使用带有错误代码的exit)。

有没有办法捕获exit(我知道trap),但是不要中断命令流(比如异常捕获)?

我的测试脚本:

do_smth1 && echo OK || echo Fail
do_smth2 && echo OK || echo Fail
do_smth3 && echo OK || echo Fail

我的主要剧本:

do_smth1(){
   ...
   ...
   [ $? -eq 0 ] && success || error_exit
}

等等。

我想一个接一个地执行所有测试。现在在第一次命令后流动中断。

1 个答案:

答案 0 :(得分:1)

你可以写:

success=0
error_code=1
do_smth1(){          
   ...          
   ...          
   [ $? -eq 0 ] && return $success || return $error_code         
}

do_smth1 && echo OK || echo Fail             
do_smth2 && echo OK || echo Fail             
do_smth3 && echo OK || echo Fail   

请参阅手册页以了解退出和退货,了解何时使用哪个。