Derzeit mache ich einige Unit-Tests, die von Bash ausgeführt werden. Unit-Tests werden in einem Bash-Skript initialisiert, ausgeführt und bereinigt. Dieses Skript enthält normalerweise die Funktionen init (), execute () und cleanup (). Sie sind jedoch nicht obligatorisch. Ich möchte testen, ob sie definiert sind oder nicht.
Ich habe dies zuvor getan, indem ich die Quelle ergriffen und ausgesät habe, aber es schien falsch zu sein. Gibt es eine elegantere Möglichkeit, dies zu tun?
Bearbeiten: Das folgende Sniplet wirkt wie ein Zauber:
fn_exists()
{
LC_ALL=C type $1 | grep -q 'shell function'
}
type -t
und speichern ==
.
type test_function
sagt test_function on funktio.
bei Verwendung des finnischen Gebietsschemas und ist eine Funktion
bei Verwendung des deutschen.
LC_ALL=C
zum Resque
fn_exists foo || foo() { :; }