Διαδρομές
/
jq
jq
/
Ύλη
/
Συνθήκες
Συ

Συνθήκες σε jq

7 ασκήσεις

Σχετικά με την έννοια Συνθήκες

Έκφραση υπό συνθήκη

Η έκφραση υπό συνθήκη του jq είναι if A then B else C end.

Το if-then-else είναι ένα φίλτρο όπως όλα τα ενσωματωμένα του jq: παίρνει μια είσοδο και παράγει μια έξοδο.

Αν η έκφραση A παράγει μια τιμή που θεωρείται αληθής, τότε το φίλτρο if αξιολογεί το B. Διαφορετικά, αξιολογεί το C. Η είσοδος του φίλτρου if περνάει στο B ή στο C.

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

Η ρήτρα else είναι προαιρετική. Οι δύο παρακάτω εντολές είναι ισοδύναμες.

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

Εμφωλευμένες εντολές if

Μπορείς να προσθέσεις κι άλλες συνθήκες με το elif.

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

Χρησιμοποίησε όσες ρήτρες elif χρειάζεσαι.

Αληθείς τιμές

Οι μόνες τιμές που θεωρούνται ψευδείς στο jq είναι: false και null. Όλα τα υπόλοιπα θεωρούνται αληθή, ακόμα και το μηδέν και η κενή συμβολοσειρά, ο κενός πίνακας και το κενό αντικείμενο.

Τελεστές Boolean

Οι τελεστές Boolean and και or μπορούν να χρησιμοποιηθούν για να φτιάξεις σύνθετα ερωτήματα.

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

Για άρνηση, χρησιμοποίησε το not. Αυτό είναι ένα φίλτρο, όχι τελεστής.

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

Ο εναλλακτικός τελεστής

Ο εναλλακτικός τελεστής σου επιτρέπει να ορίσεις μια "προεπιλεγμένη" τιμή, αν μια έκφραση είναι false ή null.

A // B

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

Για να το δείξουμε:

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

Υπάρχουν κι άλλα;

Οι προγραμματιστές που έρχονται από άλλες γλώσσες ίσως περιμένουν μεγαλύτερη ποικιλία εντολών υπό συνθήκη, όπως cond, case, switch, when, unless, έναν τριμερή τελεστή κ.λπ. Οι τελεστές που αναφέρονται παραπάνω είναι το μόνο που προσφέρει το jq.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Συνθήκες

Η εξάσκηση είναι κλειδωμένη

Ξεκλείδωσε 6 ακόμη ασκήσεις για να εξασκηθείς στην έννοια Συνθήκες