Auch wenn ich die Variable a nicht an pqr() übergebe, bekomme ich a = 10 in pqr(). Meine Frage ist ist Umfang und Sichtbarkeit von a ist das gleiche in pqr() wie die von abc()? Ist dies, weil wir pqr() von Funktion abc() aufrufen? Ich hatte erwartet neue Variable würde innerhalb pqr erstellt werden und wird angezeigt leerer Wert. (Da dies ist, wie variabler Bereich und Sichtbarkeit in modernen Sprachen funktioniert, bin ich neugierig, wie das innerhalb der Bash funktioniert) Ich habe verstanden, dass im obigen Beispiel Wenn ich eine interne pqr() deklariere, wird neue Variable erstellt und daher Anzeige leerer Wert. Danke im Voraus!!!Lokaler variabler Bereich, wenn eine Funktion eine andere innerhalb der Bash-Shell aufruft
2
A
Antwort
5
Wie in den Kommentaren erwähnt (von man bash
):
Wenn
local
innerhalb einer Funktion verwendet wird, bewirkt, dass die Variablennamen einen sichtbaren Rahmen für diese Funktion und ihre Kinder eingeschränkt haben.
So pqr
aus abc
Aufruf bedeutet, dass die Variable $a
innerhalb beiden Funktionen sichtbar ist.
Es ist erwähnenswert, dass, da Sie Bash-spezifische Funktionen wie local
und die nicht-portable function
Syntax verwenden, sollten Sie Ihren Shebang zu #!/bin/bash
ändern.
Verwandte Themen
- 1. Test, dass eine Funktion eine andere Funktion mit Mocha aufruft
- 2. Variabler Bereich innerhalb Lambda
- 3. Variabler Bereich innerhalb der While-Schleife
- 4. Javascript variabler Bereich innerhalb der Schleife
- 5. zählen, wenn variabler Bereich vba
- 6. Variabler Bereich außerhalb der jQuery-Funktion
- 7. ES6 und variabler Bereich innerhalb eines Versprechens
- 8. Lokaler variabler Speicherort
- 9. Golang: variabler Bereich innerhalb von if-Anweisungen
- 10. Testen, dass eine Funktion eine andere Funktion in einem ES6-Modul mit Sinon.js aufruft
- 11. Wie kann ich eine Funktion (a) schreiben, die nach Abschluss eine andere Funktion (b) aufruft?
- 12. Funktion, die eine bestimmte Funktion aufruft
- 13. Wie Rückgabewert der Funktion zu dokumentieren, die eine andere Funktion aufruft
- 14. jQuery - Variable innerhalb einer Funktion an eine andere Funktion übergeben
- 15. rspec Überprüfen, ob eine Methode eine andere Methode aufruft
- 16. Wie schreibe ich eine Funktion, die eine Funktion aufruft, die data.table aufruft?
- 17. C++ - Strukturobjekt, das eine Funktion aufruft
- 18. variabler Bereich in Golang
- 19. Spring-Transaktionen verstehen - Was passiert, wenn eine Transaktions-Methode eine andere Transaktions-Methode aufruft?
- 20. Speichern variabler Größe Teil der Zeichenfolge auf eine andere Variable
- 21. Variabler Bereich in Jade
- 22. Variabler Bereich als Eingang
- 23. Ist es in Ordnung, wenn ich innerhalb einer gespeicherten Prozedur eine andere aufruft, die eine niedrigere Transaktionsisolationsstufe festlegt?
- 24. Test (Mocking) eine Void-Funktion, die intern andere Funktionen aufruft, die eine Verbindung zur Datenbank herstellen
- 25. ASP.NET MVC 2: Html.ActionLink eine andere Funktion innerhalb des Controllers?
- 26. Jquery $ .post() variabler Bereich
- 27. Javascript-Klasse variabler Bereich mit Prototyp
- 28. Bash variabler Bereich
- 29. Variabler Bereich in Ruby
- 30. Wie man die Methode einer Klasse aufruft, wenn eine andere Methode der Klasse aufgerufen wird (Ruby)
"Ist das, weil wir pqr() von Funktion abc() aufrufen?" - Ja :-) –
Das Handbuch für "lokale" Erwähnungen "es macht die Variable NAME haben einen sichtbaren Bereich auf diese Funktion und ihre Kinder beschränkt." –
Die meisten modernen Sprachen sind lexikalisch begrenzt. 'bash' ist jedoch dynamisch beschränkt. – chepner