शर

शर्तें में jq

7 अभ्यास

शर्तें के बारे में

if एक्सप्रेशन

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 ही "गलत" वैल्यू हैं। बाकी सब कुछ "सही" है, यहाँ तक कि शून्य संख्या और खाली स्ट्रिंग, खाली ऐरे और खाली ऑब्जेक्ट भी।

बूलियन ऑपरेटर

जटिल क्वेरी बनाने के लिए बूलियन ऑपरेटर 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

वैकल्पिक ऑपरेटर

वैकल्पिक ऑपरेटर की मदद से आप बता सकते हैं कि कोई एक्सप्रेशन गलत या 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 और अभ्यास अनलॉक कीजिए