Currently I’m doing some unit tests which are executed from bash. Unit tests are initialized, executed and cleaned up in a bash script. This script usualy contains an init(), execute() and cleanup() functions. But they are not mandatory. I’d like to test if they are or are not defined.
I did this previously by greping and seding the source, but it seemed wrong. Is there a more elegant way to do this?
Edit: The following sniplet works like a charm:
fn_exists() { LC_ALL=C type $1 | grep -q 'shell function' }
Like this:
[[ $(type -t foo) == function ]] && echo "Foo exists"The built-in
typecommand will tell you whether something is a function, built-in function, external command, or just not defined.Additional examples: