Nushell
Buch
Cookbook
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
Buch
Cookbook
Blog
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
  • Einleitung
  • Erste Schritte
    • Nu installieren
    • Im System navigieren
    • Denken in Nushell
  • Nu Grundlagen
    • Datentypen
    • Laden von Daten
    • Pipelines
    • Mit Text arbeiten
    • Mit Listen arbeiten
    • Mit Tabellen arbeiten
  • Programmieren in Nu
    • Eigene Befehle
    • Aliase
    • Operatoren
    • Variablen und Unterausdrücke
    • Skripte
    • Überlagerungen
    • Befehls Signatur
  • Nu als Shell
    • Konfiguration
    • Environment
    • Aufruf von Systembefehlen
    • Konfiguration von Drittanbieter-Prompts
    • Eigene Vervollständigungen
    • Farben und Themen in Nu
    • Hooks
    • Hintergrund-Tasks in Nu
  • Wechsel zu Nu
    • Vergleich zu Bash
    • Command Reference
  • (Nicht nur für) Fortgeschrittene
    • Plugins
    • Metadaten

Operatoren

Nushell unterstützt folgende Operatoren für gängige Mathematik, Logik und Text Operationen:

OperatorBeschreibung
+addieren
-subtrahieren
*multiplizieren
/dividieren
//Abrundungs Division
modModulo
**potenzieren
==gleich
!=ungleich
<kleiner als
<=kleiner gleich
>grösser als
>=grösser gleich
=~regex Vergleich / Text enthält
!~inverser regex Vergleich / Text enthält nicht
inWert in Liste enthalten
not-inWert nicht in Liste enthalten
notLogisches Nein
andund zweier bool Ausdrücke (short-circuits)
oroder zweier bool Ausdrücke (short-circuits)
xorexclusives oder zweier bool Ausdrücke
bit-orbitweises oder
bit-xorbitweises xor
bit-andbitweises und
bit-shlbitweises shift links
bit-shrbitweises shift rechts
starts-withText startet mit
ends-withText endet mit
++an Listen anfügen

Klammern können verwendet werden, um mathematische Ausdrücke zu gruppieren. Das erlaubt es (1 + 2) * 3 zu verwenden, um beispielsweise die Addition vor der Multiplikation auszuführen.

Reihenfolge von Operationen

Mathematische Operationen werden in der folgenden Reihenfolge ausgewertet (von der höchsten Priorität zur niedrigsten Priorität):

  • Klammern (())
  • Potenzieren (**)
  • Multiplizieren (*), Dividieren (/), Abrundungs Division (//), und Modulo (mod)
  • Addieren (+) and Subtrahieren (-)
  • Bit Shiften (bit-shl, bit-shr)
  • Vergleich Operations (==, !=, <, >, <=, >=), Mitglieds Tests (in, not-in, starts-with, ends-with), regex Übereinstimmungen (=~, !~), und Listen anfügen (++)
  • Bitweises und (bit-and)
  • Bitweises xor (bit-xor)
  • Bitweises oder (bit-or)
  • Logisches und (and)
  • Logisches xor (xor)
  • Logisches oder (or)
  • Zuweisungs Operationen
3 * (1 + 2)
# => 9

Typen

Nicht alle Operationen ergeben für alle Datentypen Sinn. Wenn eine Operation auf einen nicht kompatiblen Datentyp angewendet werden soll, wird ein Fehler ausgegeben, der erklären soll, was falsch gelaufen ist:

"spam" - 1
# => Error: nu::parser::unsupported_operation (link)
# => 
# =>   × Types mismatched for operation.
# =>    ╭─[entry #49:1:1]
# =>  1 │ "spam" - 1
# =>    · ───┬── ┬ ┬
# =>    ·    │   │ ╰── int
# =>    ·    │   ╰── doesn't support these values.
# =>    ·    ╰── string
# =>    ╰────
# =>   help: Change string or int to be the right types and try again.

Die Regeln fühlen sich oft strickt an. Auf der anderen Seite sollten sich jedoch weniger unerwünschte Nebeneffekte einschleichen.

Reguläre Ausdrücke / Text enthält Operator

Die =~ und !~ Operator bieten eine praktische Möglichkeit Reguläre Ausdrücke auszuwerten. Fundierte Kenntnisse in Regluären Ausdrücke werdne dafür nicht benötigt - es ist damit recht einfach herauszufinden, ob ein Text in einem anderen enthalten ist.

  • text =~ muster gibt true zurück, wenn text ein Teil von muster ist, und ansonsten false.
  • text !~ muster gibt false zurück, wenn text ein Teil von muster ist, und ansonsten true.

Zum Beispiel:

foobarbaz =~ bar # gibt true zurück
foobarbaz !~ bar # gibt false zurück
ls | where name =~ ^nu # Gibt alle Dateien zurück, deren Namen mit "nu" beginnen.

Beide Operatoren benutzen die Rust Regex-Crate Funktion is_match().

Gross- Kleinschreibung

Operatoren beachten grundsätzlich die Gross- Kleinschreibung bei Textoperationen. Es gibt einige Möglichkeiten dies zu ändern:

  1. Beim regulären Ausdruck Operator, kann die (?i) Modifikation angewendet werden:
"FOO" =~ "foo" # gibt false zurück
"FOO" =~ "(?i)foo" # gibt true zurück
  1. Verwenden des --ignore-case Parameters für den str contains Befehl:
"FOO" | str contains --ignore-case "foo"
  1. Konvertieren von allen Zeichen in einem Text zu Kleinbuchstaben mittels str downcase vor einem Vergleich:
("FOO" | str downcase) == ("Foo" | str downcase)
Diese Seite auf GitHub bearbeiten
Contributors: petrisch, Stefan Holderbach, Justin Ma, Wenbo, 0x4D5352, NotTheDr01ds, joshuanussbaum, Jan Klass, Solomon
Prev
Aliase
Next
Variablen und Unterausdrücke