Parcours
/
jq
jq
/
Programme
/
Conditionnelles
Co

Conditionnelles en jq

7 exercices

À propos de Conditionnelles

Expression if

L'expression conditionnelle de jq s'écrit if A then B else C end.

if-then-else est un filtre, comme toutes les fonctions natives de jq : il prend une entrée et produit une sortie.

Si l'expression A produit une valeur « vraie », le filtre if évalue B. Sinon, il évalue C. L'entrée du filtre if est transmise à B ou à C.

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

La clause else est facultative ; les deux instructions suivantes sont équivalentes.

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

Instructions if imbriquées

On peut ajouter d'autres conditions avec elif.

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

Utilise autant de clauses elif que nécessaire.

Valeurs vraies et fausses

Les seules valeurs « fausses » en jq sont false et null. Tout le reste est « vrai », même le nombre zéro, ainsi que la chaîne, le tableau et l'objet vides.

Opérateurs booléens

Les opérateurs booléens and et or permettent de construire des requêtes complexes.

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

Pour obtenir la négation, utilise not. Il s'agit d'un filtre, et non d'un opérateur.

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

Opérateur alternatif

L'opérateur alternatif permet de spécifier une valeur « par défaut » lorsqu'une expression est fausse ou nulle.

A // B

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

Pour illustrer :

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

Y en a-t-il d'autres ?

Les programmeurs venus d'autres langages peuvent s'attendre à une plus grande variété de commandes conditionnelles, comme cond, case, switch, when, unless, un opérateur ternaire, etc. Les opérateurs listés ci-dessus sont tout ce que jq propose.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Conditionnelles

L'entraînement est verrouillé

Déverrouille 6 exercices de plus pour t'entraîner sur Conditionnelles