Es scheint mir, gibt es mehrere Möglichkeiten, einen Wert aus einer Bash-Funktion zurückzugeben.Rückgabe von Werten aus Funktionen, wenn Effizienz von Bedeutung ist
Ansatz 1: Verwenden einer "local-global" Variable, die als local
in den Aufrufer definiert ist:
func1() {
a=10
}
parent1() {
local a
func1
a=$(($a + 1))
}
Ansatz 2: Verwendung Befehl Substitution:
func2() {
echo 10
}
parent2() {
a=$(func2)
a=$(($a + 1))
}
Wie viel Beschleunigung könnte man von Ansatz 1 gegenüber Ansatz 2 erwarten?
Und ich weiß, dass es keine gute Programmierpraxis ist, globale Variablen wie in Ansatz 1 zu verwenden, aber könnte es irgendwann aus Effizienzgründen gerechtfertigt sein?
Versuchen Sie, Benchmarks auszuführen? – shauryachats
Ja, Ansatz 1 scheint auf meinem Ubuntu-Laptop ca. 33 mal schneller zu sein :) –
Wenn es auf Effizienz ankommt, hört man auf 'bash' (oder irgendeinen Geschmack von' sh') zu verwenden. –