Wie kann ich die Ausgabe einer Funktion mittels bash einer Variablen zuordnen?
Ich habe eine bash-Funktion, die erzeugt die Ausgabe:
function scan {
echo "output"
}
Wie kann ich ordnen Sie diese Ausgabe in eine variable?
ie. VAR=scan (natürlich funktioniert das nicht - es macht VAR gleich dem string "scan")
Kommentar zu dem Problem
Verwandte: stackoverflow.com/q/3236871/435605
InformationsquelleAutor der Frage Brent | 2009-11-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Genau der gleichen Weise wie für Programme.
InformationsquelleAutor der Antwort Robert Obryk
Können Sie verwenden die bash-Funktionen in Befehle/pipelines, wie Sie sonst verwenden würde regelmäßige Programme. Die Funktionen sind ebenfalls verfügbar, um Unterschalen und transitiv a, Substitutionen:
Ist der Weg geradewegs zu erreichen das Ergebnis das Sie wollen in den meisten Fällen. Ich werde Gliederung besonderen Fällen unten.
Erhaltung der nachfolgende Zeilenumbrüche:
Einer der (in der Regel hilfreich) Nebenwirkungen von Substitutionen ist, dass es Streifen beliebiger Anzahl der nachfolgende Zeilenumbrüche. Wenn man wünscht, zu bewahren nachfolgende Zeilenumbrüche, man kann fügen Sie ein dummy-Zeichen zum Ausgang des subshell, und anschließend entfernen Sie es mit dem parameter-expansion.
Drucke (3 Zeilenumbrüche beibehalten):
Verwenden Sie ein output-parameter: die Vermeidung der subshell (und Erhaltung Zeilenumbrüche)
Wenn das, was die Funktion versucht, zu erreichen, ist "return" eine Zeichenkette in eine variable , mit der bash v4.3 kann man verwenden, was heißt eine
nameref
. Namerefs erlaubt, eine Funktion zu nutzen, die die Namen von einer oder mehreren Variablen output-Parameter. Ordnen Sie die Dinge zu einem nameref variable, und es ist, als ob Sie verändert die variable "Punkte/Referenzen".Drucke:
Diese form hat einige Vorteile. Nämlich, es ermöglicht es, Ihre Funktion zu ändern, die Umgebung des Anrufers ohne die Verwendung von globalen Variablen überall.
Hinweis: die Verwendung namerefs verbessern können die Leistung des Programms erheblich, wenn Ihre Funktionen stark auf bash gelieferten, weil es vermeidet die Schaffung einer subshell, die weggeworfen werden, nur nach. Dies macht allgemein mehr Sinn für kleine Funktionen, die oft wiederverwendet werden, z.B. Funktionen der Endung
echo "$returnstring"
Ist dies relevant. https://stackoverflow.com/a/38997681/5556676
InformationsquelleAutor der Antwort init_js
Ich denke init_js verwenden sollten, erklären statt lokal!
InformationsquelleAutor der Antwort Hamid Reza Hasani