Hervorhebung der Bash-Syntax von Subshells

13

Angesichts der Vielzahl von Fragen, die sich im Zusammenhang mit Subshells in Bash herausstellen ("Warum erhöht sich meine Variable in dieser Pipeline- while readSchleife nicht ?"), Dachte ich nur, es wäre sehr schön, auf einen Editor oder Dienst mit Code zu verweisen Die in Subshells auszuführende Datei ist anders formatiert als der in der übergeordneten Shell ausgeführte Code. Es kann als Lehrmittel nützlich sein (sehen Sie den Unterschied zwischen code | codeund code < <(code)sofort). Existiert das?

Bonuspunkte, wenn jemand sie für jEdit oder VIm einsetzt.

Natürlich muss es nicht perfekt sein (meiner Erfahrung nach gibt es keine Syntaxhervorhebung), aber ich vermute, dass Dinge wie (foo=bar; echo $foo;)und command | while read ...nicht zu schwierig für den Anfang sein sollten.

l0b0
quelle
Ich bin sicher, Sie könnten es zur vimCode-Hervorhebung hinzufügen .
Kevin
2
@ Kevin: Die Frage ist eher, ob es in irgendeiner Form schon existiert . Es kann natürlich zu jedem Editor hinzugefügt werden, der ein Turing-vollständiges Hervorhebungssystem unterstützt.
l0b0
1
Im Fall der Piped While-Schleife gibt POSIX nicht an, welcher Teil der Pipe im übergeordneten Element ausgeführt wird. Wenn diese Hervorhebung als Lehrmittel vorhanden ist, wird den Benutzern das Schreiben von nicht portierbaren Shell-Skripten beigebracht :(
James Youngman
@ James Youngman: Ein weiterer Grund, es Bash-spezifisch zu machen :)
l0b0

Antworten:

2

Ich glaube nicht, dass es das gibt. Es wäre nützlich, aber mit den in Editoren verwendeten Syntaxanalyseverfahren schwer zu implementieren. Aus der Sicht der Syntaxanalyse gibt es viele Schlüsselwörter und spezielle Symbole, die analysiert werden müssten, um einen Codeblock zu bestimmen, der zu einer Subshell gehört.

Aber ich würde mich freuen zu sehen, dass ich falsch liege und jemand hat sich die Mühe gemacht, solche Konfigurationen zu erstellen.

rozcietrzewiacz
quelle
0

Mein Vim macht das schon.

Es stört mich tatsächlich, weil es dazu führt, dass Kommentare in den Subshells nicht die richtige Hervorhebung erhalten.

Bildbeschreibung hier eingeben

Dies ist Vim 7.3 Patch 874, der aus dem Quellcode kompiliert wurde.

Steven Lu
quelle
Manchmal stelle ich den Dateityp auf ein, zshwenn ich in einer Subshell arbeite. Das korrigiert die Syntaxhervorhebung.
OMG das ist perfekt. Vielen Dank!! Ich muss diesen ganzen riesigen Block (mit vielen Kommentaren) in der Subshell haben, damit ich das set -x; set -ein diesem Abschnitt machen kann. Und um all diese Ausgaben einschließlich stderr in einem Protokoll festzuhalten.
Steven Lu
1
Ich sehe keine Formatierung in der Subshell, was nicht sehr nützlich erscheint. Oder fehlt es nur im Screenshot?
l0b0
Der Variablensatz und das trapSchlüsselwort sind dort hervorgehoben. Kommentare konnten nur nicht hervorgehoben werden. Der zsh-Dateityp funktioniert jedoch. Nun, soweit die Unterschale von der Hauptschale zu unterscheiden ist (was ist schließlich das, was Sie wollten, denke ich), verwenden Sie einige Kommentare?
Steven Lu