Tracks
/
jq
jq
/
Lehrplan
/
Bedingte Anweisungen
Be

Bedingte Anweisungen in jq

7 Übungen

Über Bedingte Anweisungen

if-Ausdruck

Der bedingte Ausdruck von jq ist if A then B else C end.

if-then-else ist ein Filter wie alle in jq eingebauten Filter: Er nimmt eine Eingabe und erzeugt eine Ausgabe.

Wenn der Ausdruck A einen „truthy“-Wert erzeugt, wertet der if-Filter B aus. Andernfalls wertet er C aus. Die Eingabe für den if-Filter wird an B oder C weitergegeben.

42 | if . < 50 then "small" else "big" end      # => "small"
5 | if . % 2 == 0 then . / 2 else . * 4 end     # => 20
Note

Die else-Klausel ist optional; die folgenden beiden Anweisungen sind äquivalent.

if A then B else . end
if A then B end

Verschachtelte if-Anweisungen

Weitere Bedingungen kannst du mit elif hinzufügen.

42 | if . < 33 then "small"
     elif . < 66 then "medium"
     else "big"
     end
# => "medium"

Verwende so viele elif-Klauseln, wie du brauchst.

Was als wahr gilt

Die einzigen „falschen“ Werte in jq sind: false und null. Alles andere ist „wahr“, sogar die Zahl Null und der leere String, das leere Array und das leere Objekt.

Boolesche Operatoren

Mit den booleschen Operatoren and und or kannst du komplexe Abfragen erstellen.

42 | if . < 33 or . > 66 then "big or small"
     else "medium"
     end

Zum Negieren verwendest du not. Das ist ein Filter, kein Operator.

42 | if (. < 33 or . > 66 | not) then "medium"
     else "big or small"
     end

Alternativoperator

Der Alternativoperator ermöglicht es dir, einen „Standardwert“ anzugeben, wenn ein Ausdruck falsch oder null ist.

A // B

# This is identical to
if A then A else B end

Ein Beispiel:

[3, 5, 18] | add / 2       # => 13
[]         | add / 2       # => error: null (null) and number (2) cannot be divided
[]         | add // 0 / 2  # => 0

Gibt es noch mehr?

Programmierer, die aus anderen Sprachen kommen, erwarten vielleicht eine größere Vielfalt an bedingten Konstrukten, wie cond, case, switch, when, unless, ternäre Operatoren und so weiter. Die oben aufgeführten Operatoren sind alles, was jq bietet.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne Bedingte Anweisungen

Das Üben ist gesperrt

Schalte 6 weitere Übungen frei, um Bedingte Anweisungen zu üben