Wenn ich ein Bash-Skript habe wie:
#!/bin/bash
f() {
# echo function name, "f" in this case
}
Gibt es eine Möglichkeit, dies zu tun? Dies kann in Hilfemeldungen wie verwendet werden
printf "Usage: %s: blah blah blah \n" $(basename $0) >&2;
Nur in diesem Fall wollte ich nicht $0
, das ist der Dateiname des Skripts.
FUNCNAME
Array- und andere Bash-Variablen verwendet: github.com/codeforester/base/blob/master/lib/stdlib.sh . Siehe Funktionenlog_debug_enter
undlog_debug_leave
insbesondere.Antworten:
Sie können
${FUNCNAME[0]}
in verwendenbash
, um den Funktionsnamen abzurufen.quelle
Aus dem Bash-Referenzhandbuch :
Wenn auf Bash-Arrays ohne Index zugegriffen wird,
$FUNCNAME
wird das erste Element des Arrays zurückgegeben. In einfachen Fällen wird daher der Name der sofort aktuellen Funktion angegeben, es enthält jedoch auch alle anderen Funktionen im Aufrufstapel. Beispielsweise:Wird ausgegeben:
quelle
[0]
wenn es durch den Zugriff auf die nicht dekorierte Variable impliziert wird?Ich
${FUNCNAME[0]}
drucke den aktuellen Funktionsnamenquelle
Ein anderes Beispiel:
Wird ausgegeben:
quelle
Der einfachste Weg, um den Funktionsnamen zu erhalten (aus einer Funktion heraus)
quelle
###
auf, Ihre Antworten zu missbrauchen .