GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Funktionen in Shell-Variablen?

Ich lese diesen Beitrag über die Verwendung von Funktionen in Bash-Shell-Variablen. Ich beobachte, dass man Shell-Funktionen exportieren und wie folgt in einer untergeordneten Shell ausführen muss, um Shell-Funktionen zu verwenden:

$ export foo='() { echo "Inside function"; }'
$ bash -c 'foo'
Inside function

Ich möchte fragen, ob es möglich ist, Funktionen in Bash-Shell-Variablen so zu definieren, dass sie in der aktuellen Shell ausgeführt werden können, ohne export &running new shell ?

Akzeptierte Antwort:

Nein, das kannst du nicht.

Wenn Sie eine Funktion in der aktuellen Shell verwenden möchten, definieren Sie sie einfach und verwenden Sie sie später:

$ foo() { echo "Inside function"; }
$ foo
Inside function

Vor dem Shellshock-Tag konnten Sie Funktionen in einer Variablen speichern, Variablen exportieren und Funktionen in Sub-Shell verwenden, da bash Exportfunktion unterstützen, bash wird die Funktionsdefinition in Umgebungsvariable setzen wie:

foo=() {
  echo "Inside function"
}

interpretieren Sie dann die Funktion, indem Sie = ersetzen mit Platz. Es ist nicht beabsichtigt, die Funktion in eine Variable zu setzen und auf die Variable zu verweisen, um die Funktion auszuführen.

Jetzt, nachdem Stéphane Chazelas den Fehler gefunden hat, wurde dieses Feature entfernt, keine Funktionsdefinition mehr in einer einfachen Umgebungsvariable gespeichert. Jetzt werden exportierte Funktionen durch Anhängen des Präfixes BASH_FUNC_ codiert und Suffix %% um Konflikte mit Umgebungsvariablen zu vermeiden. bash Der Interpreter kann jetzt unabhängig vom Inhalt der Variablen feststellen, ob es sich um eine Shell-Funktion handelt oder nicht. Sie müssen die Funktion auch definieren und explizit exportieren, um sie in der Sub-Shell zu verwenden:

$ foo() { echo "Inside function"; }
$ export -f foo
$ bash -c foo
Inside function

Wie auch immer, wenn Ihr Beispiel mit Ihrer aktuellen bash funktioniert hat , verwenden Sie eine anfällige Version.


Linux
  1. Importieren Sie Funktionen und Variablen mit dem Quellbefehl in Bash

  2. Festlegen von Shell-Umgebungsvariablen | BASH-Shell

  3. Welches sind die speziellen Parameter/Variablen der (Bash-)Shell?

  4. Bash-Anfängerserie Nr. 9:Verwenden von Funktionen in Bash

  5. Holen Sie sich eine Liste von Funktionsnamen in einem Shell-Skript

.bashrc vs. .bash_profile

Shell-Scripting Teil V:Funktionen in Bash

Bash Scripting – Funktionen mit Beispielen erklärt

Bash Beginner Series #2:Variables in Bash Shell Scripting verstehen

Bash-Scripting Teil 6 – Erstellen und Verwenden von Bash-Funktionen

Tutorial zu Bash-Shell-Funktionen mit 6 praktischen Beispielen