我有一个bash脚本,当我无法识别选项或找不到预期的选项参数exit
时,我会在某个地方调用以跳过脚本的其余部分getopts
。
while getopts ":t:" opt; do
case $opt in
t)
timelen="$OPTARG"
;;
\?) printf "illegal option: -%s\n" "$OPTARG" >&2
echo "$usage" >&2
exit 1
;;
:) printf "missing argument for -%s\n" "$OPTARG" >&2
echo "$usage" >&2
exit 1
;;
esac
done
# reset of the script
我source
的脚本在bash shell中。当出现问题时,shell退出。
除了exit
跳过脚本的其余部分,但不退出调用外壳程序,还有其他方法吗?
更换exit
用return
像不起作用函数调用,并且脚本的其余部分将运行。
谢谢。
使用return
。
内置的return bash将退出源脚本,而不会停止调用(父/源)脚本。
来自man bash:
return [n]
使函数停止执行并将n指定的值返回给其调用方。如果省略n,则返回状态为函数体内执行的最后一条命令的返回状态。…如果在函数外部使用return,但在脚本执行期间使用。(源)命令,它将使外壳程序停止执行该脚本,并返回n或脚本中最后执行的命令的退出状态作为脚本的退出状态。…
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句