369 Stimmen

Kann die Bash die Definition einer Funktion anzeigen?

Gibt es eine Möglichkeit, die Definition einer Bash-Funktion in der Bash anzuzeigen?

Nehmen wir an, ich habe die Funktion foobar

function foobar {
    echo "I'm foobar"
}

Gibt es eine Möglichkeit, später den Code zu erhalten, der foobar läuft?

$ # non-working pseudocode
$ echo $foobar
echo "I'm foobar"

480voto

Benjamin Bannier Punkte 50065

Verwenden Sie type . Wenn foobar ist z.B. in Ihrem ~/.profile :

$ type foobar
foobar is a function
foobar {
    echo "I'm foobar"
}

Damit wird herausgefunden, was foobar war, und wenn sie als Funktion definiert wurde, ruft sie declare -f wie von pmohandras erklärt.

Um nur den Körper der Funktion (d.h. den Code) auszudrucken, verwenden Sie sed :

type foobar | sed '1,3d;$d'

329voto

pmohandas Punkte 3459

Sie können die Definition einer Funktion in der Bash mit declare anzeigen. Zum Beispiel:

declare -f foobar

8voto

set | sed -n '/^foobar ()/,/^}/p'

Dies gibt im Wesentlichen die Zeilen aus Ihrem Set-Befehl aus, die mit dem Funktionsnamen foobar () beginnen und mit } enden

4voto

pyroscope Punkte 4102
set | grep -A999 '^foobar ()' | grep -m1 -B999 '^}'

wobei foobar der Name der Funktion ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X