我有一个以下脚本,我在其中调用来自" lib"的函数。文件。它工作正常。但是如何实现异常处理,以便在脚本文件或" lib"中更改函数名称时文件和函数未被调用,脚本应该终止。
脚本文件:
#!/bin/bash
#Include Functions file
. ./testlibrary.lib
echo "Start"
testFunction
echo "Finish"
LibraryFile:
#!/bin/bash
testFunction(){
echo "testing begins"
echo "testing ends"
}
注意:
我无法使用" set -e"标志所以有没有其他任何方法来实现这一点,如果我的命令失败,它应该终止脚本。
答案 0 :(得分:1)
您可以预先查看该功能是否存在typeset
:
if [[ -z "$(typeset -f testFunction)" ]] ; then
echo Cannot find testFunction
exit
fi
testFunction
它有点像kludge,但它似乎与我迄今为止的最小测试工作正常。你可能想留意边缘情况。
答案 1 :(得分:0)
您可以使用:
if ! testFunction
then echo "testFunction not found"
exit
fi
只要函数本身永远不会以错误退出。
答案 2 :(得分:0)
您可以检查函数调用是否通常失败,如下所示:
testFunction || exit 1
请注意,这并不区分"未找到功能"来自"功能失败。"如果您需要这样做,请在调用函数之前执行此操作:
type -t testFunction >/dev/null || exit 1
testFunction # definitely exists, could still fail but we'll ignore that