如何使用 Bash 卷曲并解析端点数据?

如何使用 Bash 卷曲并解析端点数据?

我正在尝试访问端点http://myapp.com/health并获取version值。我该怎么做?请注意,我计划在 TeamCity 中运行此脚本。

回复来自http://myapp.com/health

{
  "Status": "online",
  "Version": "1.23",
  "Environment": "Test"
}

答案1

jq方法。

尝试使用jq像这样:

curl -s 'http://myapp.com/health' | jq -r '.Version'

创建一个 Bash 函数。

或者您可以创建一个像这样的 Bash 函数parse_json;在这里找到它StackOverflow 的答案在这里

function parse_json()
{
    echo $1 | \
    sed -e 's/[{}]/''/g' | \
    sed -e 's/", "/'\",\"'/g' | \
    sed -e 's/" ,"/'\",\"'/g' | \
    sed -e 's/" , "/'\",\"'/g' | \
    sed -e 's/","/'\"---SEPERATOR---\"'/g' | \
    awk -F=':' -v RS='---SEPERATOR---' "\$1~/\"$2\"/ {print}" | \
    sed -e "s/\"$2\"://" | \
    tr -d "\n\t" | \
    sed -e 's/\\"/"/g' | \
    sed -e 's/\\\\/\\/g' | \
    sed -e 's/^[ \t]*//g' | \
    sed -e 's/^"//'  -e 's/"$//'
}

它的工作原理如下;使用内联 JSON 作为概念证明:

parse_json '{
  "Status": "online",
  "Version": "1.23",
  "Environment": "Test"
}' Version

输出如下:

1.23

awk方法。

或者老实说这个awk方法——从这个答案— 似乎是最跨平台的(至少在类 Unix 系统上);再次使用内联 JSON 作为概念证明:

echo '{
  "Status": "online",
  "Version": "1.23",
  "Environment": "Test"
}' | awk 'BEGIN { FS="\""; RS="," }; { if ($2 == "Version") {print $4} }'

相关内容