Percursos
/
jq
jq
/
Programa
/
Condicionais
Co

Condicionais em jq

7 exercícios

Sobre Condicionais

Expressão if

A expressão condicional do jq é if A then B else C end.

if-then-else é um filtro, tal como todos os builtins do jq: recebe um valor de entrada e produz um valor de saída.

Se a expressão A produzir um valor "verdadeiro", o filtro if avalia B. Caso contrário, avalia C. O valor de entrada do filtro if será passado a B ou a C.

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

A cláusula else é opcional; as duas instruções seguintes são equivalentes.

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

Condicionais aninhadas

Podes acrescentar mais condições com elif.

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

Usa tantas cláusulas elif quantas precisares.

Veracidade

Os únicos valores "falsos" em jq são: false e null. Tudo o resto é "verdadeiro", até o número zero e a string vazia, o array vazio e o objeto vazio.

Operadores booleanos

Os operadores booleanos and e or podem ser usados para construir consultas complexas.

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

Para negar, usa not. Isto é um filtro, não um operador.

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

Operador alternativo

O operador alternativo permite-te especificar um valor "predefinido" se uma expressão for falsa ou nula.

A // B

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

Para demonstrar

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

Há mais?

Quem vem de outras linguagens pode estar à espera de uma maior variedade de comandos condicionais, como cond, case, switch, when, unless, um operador ternário, etc. Os operadores acima são tudo o que o jq oferece.

Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Condicionais

A prática está bloqueada

Desbloqueia mais 6 exercícios para praticares Condicionais