摘自手册
jq 支持与 JSON 相同的一组数据类型:数字、字符串、布尔值、数组、对象(用 JSON 的说法,就是键只能是字符串的哈希),以及 “null”。
我们重点看看数字。
所有数字,无论是不是整数,都是 IEEE754 双精度浮点数。 因此我们的精度被限制在 53 位。
数字可以使用常见的运算符:
算术:+、-、*、/、%
比较:==、!=、<、<=、>=、>
标准数学函数
对于只有一个输入的函数,用管道把值传进函数:
$ 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:成功率 100%。5到8:成功率 90%。9:成功率 80%。10:成功率 77%。你有两个任务。
计算装配线每小时的生产率,并考虑其成功率。
计算每分钟生产出多少已完成并且可以正常工作的汽车。