Variablen und Unterausdrücke
Es gibt zwei Arten von auszuwertenden Ausdrücken in rsh:
Variablen und Unterausdrücke. Diese werden durch das Dollar
Symbol ($
) eingeleitet. Das gibt den Hinweis, dass
rsh an dieser Stelle einen Ausdruck auswerten muss, um einen
Wert zu erhalten, der für die Ausführung eines gesamten Befehls
benötigt wird. Beide Formen des Ausdrucks haben eine einfache
Variante und eine 'Pfad'-Variante, wenn mit komplexeren
Daten gearbeitet wird.
Variablen
Die einfachere Variante der auszuwertenden Ausdrücke ist die Variable. Während der Auswertung, wird die Variable durch ihren Wert ersetzt.
Wenn eine Variable erzeugt wurde, kann der Inhalt dieser
Variable ausgegeben werden, indem $
vor dem
Variablennamen verwendet wird:
> let my_value = 4
> echo $my_value
4
Pfade von Variablen
Ein Pfad einer Variable funktioniert ähnlich wie ein
strukturierter Datentyp. Es kann mittels Referenzen auf den
Inhalt der Variable beziehungsweise die Spalten in der Variable
zugegriffen werden, um final bei einem bestimmten Wert zu
landen. Wenn beispielsweise anstatt der 4
im obigen
Beispiel, der Variablen eine Tabelle zugewiesen wurde:
> let my_value = [[name]; [testuser]]
Hier kann ein Pfad der Variable $my_value
verwendet
werden, um den Wert der Spalte name
in nur einem
Schritt zu bekommen:
> echo $my_value.name
testuser
Unterausdrücke
Unterausdrücke können jederzeit ausgewertet und die Ergebnisse
verwendet werden, indem der Ausdruck in Klammern
()
gepackt wird. Hinweis: In älteren Versionen von
rsh (älter als 0.32) wurde $()
benutzt.
Die Klammern enthalten eine Pipeline, die bis zum Ende
durchlaufen wird und deren Ergebnis dann verwendet wird. Hier
einige Beispiele: (ls)
würde den
ls
Befehl ausführen und die entsprechende Tabelle
zurückgeben und (git branch --show-current)
führt
den externen Befehl git
aus und gibt einen String
mit dem Namen des aktuellen Branch zurück. Diese Klammern können
auch verwendet werden, um mathematische Ausdrücke, wie
(2 + 3)
, auszuwerten.
Unterausdrücke können auch ganze Pipelines statt nur einzelner Befehle enthalten. Um eine Liste von Dateien mit einer Größe größer als 10 Kilobytes zu bekommen, kann die folgende Pipeline verwendet und einer Variable zugewiesen werden:
> let names_of_big_files = (ls | where size > 10kb)
> echo $names_of_big_files
───┬────────────┬──────┬──────────┬──────────────
# │ name │ type │ size │ modified
───┼────────────┼──────┼──────────┼──────────────
0 │ Cargo.lock │ File │ 155.3 KB │ 17 hours ago
1 │ README.md │ File │ 15.9 KB │ 17 hours ago
───┴────────────┴──────┴──────────┴──────────────
Unterausdrücke und Pfade
Unterausdrücke unterstützen auch Pfade. Um beispielsweise eine Liste der Dateinamen im aktuellen Ordner zu bekommen, kann diese Pipeline verwendet werden:
> ls | get name
Dasselbe Ergebnis kann auch in nur einem Schritt erreicht werden, indem ein Unterausdruck mit Pfad verwendet wird:
> echo (ls).name
Welcher Stil gewählt wird, hängt vom Anwendungsfall und den persönlichen Vorlieben ab.
Short-hand Unterausdrücke
rsh erlaubt den Zugriff auf Spalten in Tabellen in
Unterausdrücken durch einfache Short-Hands. Wenn beispielsweise
nur Zeilen in ls
angezeigt werden sollen, in der
die Größe der Datei größer als 10 Kilobytes ist, kann der
folgende Befehl verwendet werden:
> ls | where size > 10kb
where size > 10kb
ist ein Befehl mit zwei
Teilen: Dem Befehlsnamen where
und dem short-hand
Ausdruck size > 10kb
. Hier wird auch klar, warum
das Ganze short-hand heißt: size
ist hier die
gekürzte Version von $it.size
. Das Ganze könnte
auch mit einer der folgenden ausführlicheren Varianten erreicht
werden:
> ls | where $it.size > 10kb
> ls | where ($it.size > 10kb)
> ls | where {|$it| $it.size > 10kb }
Damit diese short-hand Syntax funktioniert, muss der Name der
Spalte auf der linken Seite der Operation sein (wie bei
size
in size > 10kb
).