具有一个脚本,该脚本涉及编写列出每个函数中的返回代码的函数。
示例: 脚本:
critical function 1{
typeset retval=0
success: return 0
failure: return 1
return $retval
}
lessimp check function 2{
typeset retval=0
success: return 0
failure: return 127 (since its not a critical function and just a warning for me)
return $retval
}
我如何为具有多种功能的脚本提供总体返回代码。如果一切成功,我想将整个脚本的返回码设置为0。如果关键功能失败,则退出1;如果只是警告,则退出127。
我该怎么做?
答案 0 :(得分:0)
您可以维护两个全局变量(也许是haswarnings
,haserrors
)。
函数每次返回时都会更新相应的值。
在脚本末尾,检查值并适当返回:
#!/bin/sh
haserrors=0
haswarnings=0
update_global_return(){
# must call immediately after function of interest
# otherwise "$?" will no longer have correct value
returncode="$?"
case "$returncode" in
127) haswarnings=1 ;;
1) haserrors=1 ;;
esac
# reset "$?"
return "$returncode"
}
do_global_return(){
# could use exit instead of return here
case "$haserrors,$haswarnings" in
1,*) return 1 ;;
0,1) return 127 ;;
*) return 0 ;;
esac
}
# ...
critical_function_1
update_global_return
# ...
lessimp_check_function_2
update_global_return
# ...
do_global_return