0

我需要一些建议。我正在编写一个 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

所以它应该显示

"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: integer expression expected

任何建议都会被采纳。

4

1 回答 1

0

Bash 不支持平点算术。但jq确实如此。

read -p "Enter the ABV value greater to display: " -r ABV_Value
curl 'https://s3-eu-west-1.amazonaws.com/kg-it/devopsTest/api-punkapi-com-v2-beers.json' |
jq -r --arg lim "$ABV_Value" '.[] | select(.abv>=($lim|tonumber)) |
  "\"" + .name + "\", " + (.abv|tostring)'
于 2019-10-10T11:34:31.667 回答