我正在使用Bash在Linux机器上运行以下脚本片段。
JSON文件内容: [ { "id": 123456, "firstName": "John", "lastName": "Smith", "email": "[email protected]" } ]
JSON文件存储在通过${data[0]}
管道传送到Bash脚本中的数组中。
Bash脚本:
trafficEmployeeId=123456 cat "${data[0]}" | jq --arg employeeId $trafficEmployeeId '.[] | select(.id == $employeeId) | .firstName'
脚本的输出应为John
。但是我什么也没得到。
即使您为shell变量分配trafficEmployeeId
了数字,该变量也将jq
作为字符串参数传递到脚本中。
该解决方案是解析参数作为数与JQ的tonumber
功能。
第二点是只data[0]
包含一个对象的数组,因此足以直接使用它.[0]
并应用简单的if
运算符条件。
完整的解决方案:
trafficEmployeeId=123456
echo "${data[0]}" | jq --arg employeeId "$trafficEmployeeId" '.[0]
| if .id == ($employeeId | tonumber) then .firstName else empty end'
输出:
"John"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句