如何检查函数是否未在shell脚本中调用

时间:2014-12-15 06:59:18

标签: bash shell

我有一个以下脚本,我在其中调用来自" 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"标志所以有没有其他任何方法来实现这一点,如果我的命令失败,它应该终止脚本。

3 个答案:

答案 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