از این راهنما
jq از همان مجموعه انواع دادهای پشتیبانی میکند که JSON دارد: عدد، رشته، «منطقی»، آرایه، شیء (که در زبان JSON، هشهایی با کلیدهای تنها رشتهای هستند)، و «null».
بیایید روی عددها تمرکز کنیم.
همهی عددها، چه عددهای صحیح و چه غیر آن، اعداد ممیز شناور با دقت دوگانهی IEEE754 هستند. این موضوع دقت ما را به ۵۳ بیت محدود میکند.
عملگرهای معمول را میتوانید با عددها به کار ببرید:
محاسبات: +، -، *، /، %
مقایسه: ==، !=، <، <=، >=، >
توابع ریاضی استاندارد
برای توابع تکورودی، مقدار را با pipe به تابع بدهید
$ jq -n '(1 | atan) * 4'
3.141592653589793
برای توابع دوورودی، این توابع ورودی را نادیده میگیرند و انتظار دارند که ورودیها بهعنوان پارامتر داده شوند (به یاد بیاورید که پارامترها با نقطهویرگول از هم جدا میشوند)
$ jq -n 'pow(2; 10)'
1024
نقطهویرگول جداکنندهی آرگومانهای تابع است، نه ویرگول.
jq
برای حل این تمرین، باید با عبارتهای شرطی آشنا باشید.
jq برای عبارتهای شرطی از یک عبارت if-then-else استفاده میکند.
این عبارت، بهعنوان یک عبارت، در یک پایپلاین قرار میگیرد.
نحوهی نگارش آن چنین است: if CONDITION then TRUE_EXPR else FALSE_EXPR end.
بند else اختیاری است.
42 | if . < 33 then "small" else "larger" end
# => "larger"
شرطهای بیشتر با elif بیان میشوند
42 | if . < 33 then "small"
elif . < 67 then "medium"
else "large"
end
# => "medium"
در این تمرین کدی مینویسید که تولید یک خط مونتاژ را در کارخانهی خودروسازی تحلیل کند.
سرعت خط مونتاژ میتواند از 0 (خاموش) تا 10 (حداکثر) باشد.
در کمترین سرعت آن (1)، هر ساعت 221 خودرو تولید میشود.
تولید با سرعت بهصورت خطی افزایش مییابد.
پس اگر سرعت روی 4 تنظیم شود، باید هر ساعت 4 * 221 = 884 خودرو تولید کند.
اما سرعتهای بالاتر احتمال تولید خودروهای معیوب را افزایش میدهند، خودروهایی که بعداً باید دور انداخته شوند.
جدول زیر نشان میدهد که سرعت چگونه بر نرخ موفقیت اثر میگذارد:
1 تا 4: نرخ موفقیت ۱۰۰٪.5 تا 8: نرخ موفقیت ۹۰٪.9: نرخ موفقیت ۸۰٪.10: نرخ موفقیت ۷۷٪.شما دو وظیفه دارید.
نرخ تولید در ساعت خط مونتاژ را با در نظر گرفتن نرخ موفقیت آن محاسبه کنید.
محاسبه کنید در هر دقیقه چند خودروی کامل و سالم تولید میشود.