检查JSON中是否有更大的值
我需要一些建议。。我正在编写一个BASH脚本,以检查JSON文件中的信息。但是我需要检查大于用户输入的数字的值 因此,如果用户在5.6中输入(必须是十进制),那么我将检查大于或等于该值的任何内容检查JSON中是否有更大的值,json,bash,expr,Json,Bash,Expr,我需要一些建议。。我正在编写一个BASH脚本,以检查JSON文件中的信息。但是我需要检查大于用户输入的数字的值 因此,如果用户在5.6中输入(必须是十进制),那么我将检查大于或等于该值的任何内容 "Buzz", 4.5 "Trashy Blonde", 4.1 "Berliner Weisse With Yuzu - B-Sides", 4.2 "Pilsen Lager", 6.3 "Avery Brown Dredge", 7.2 "Electric India", 5.2 所以它应该表现
"Buzz", 4.5
"Trashy Blonde", 4.1
"Berliner Weisse With Yuzu - B-Sides", 4.2
"Pilsen Lager", 6.3
"Avery Brown Dredge", 7.2
"Electric India", 5.2
所以它应该表现出来
"Pilsen Lager", 6.3
"Avery Brown Dredge", 7.2
我很接近。。但是我需要一些关于表达的建议
read -p "Enter the ABV value greater to display: " ABV_Value
curl 'https://s3-eu-west-1.amazonaws.com/kg-it/devopsTest/api-punkapi-com-v2-beers.json' | jq '.[] | .name,.abv' | {
while read name;
do
read abv
#if [ $abv -ge 5.1 ]; then
if [ $abv -ge $ABV_Value ]; then
echo "$name, $abv"
fi
done
}
目前我得到-[:4.5:预期的整数表达式
任何建议都会被引用。Bash不支持展平点算法。但是
jq
支持
read-p“输入大于显示的ABV值:”-r ABV_值
卷曲'https://s3-eu-west-1.amazonaws.com/kg-it/devopsTest/api-punkapi-com-v2-beers.json' |
jq-r--arg lim“$ABV|u Value”.[]|选择(.ABV>=($lim|tonumber))|
“\”+.name+“\”,“+(.abv|tostring)”
谢谢……我使用了第一个建议,并在($(echo“$abv<$abv\u Value\u Less”| bc-l))工作,与使用内置的jq
功能相比,这是非常复杂的,不管怎么说,你都在使用它来进行JSON操作。在读取时的速度非常慢,而且有些脆弱(特别是如果您忘记使用read-r
来禁用read
行为中的遗留异常)。如果您使用,那么就不需要curl、jq甚至bash脚本!xidel-s”https://s3-eu-west-1.amazonaws.com/kg-it/devopsTest/api-punkapi-com-v2-beers.json“-e'”输入要显示的ABV值:“-e”let$a:=read()return$json()[abv>=$a]/join(“| | | | | | |,”,abv),“,”,”