📜  bash jq 输出到变量 (1)

📅  最后修改于: 2023-12-03 15:29:34.697000             🧑  作者: Mango

Bash JQ 输出到变量

在Bash脚本中,使用jq命令可帮助我们处理JSON格式的数据。而将jq的输出保存到变量中,可以更方便地在脚本中使用。

1. 安装jq

如果你的系统中没有安装jq,那么可以使用以下命令安装:

sudo apt-get install jq
2. 使用jq输出到变量

下面是一个简单的使用例子,将jq的输出保存到一个变量中:

#!/bin/bash

json='{ "name": "John", "age": 30, "city": "New York" }'

name=$(echo $json | jq -r '.name')
age=$(echo $json | jq -r '.age')
city=$(echo $json | jq -r '.city')

echo "Name: $name"
echo "Age: $age"
echo "City: $city"

在上面的例子中,我们使用了echo命令将JSON字符串传递给jq命令进行解析,并通过-r选项表示输出原始字符串而不是带引号的字符串。然后,我们使用$()语法将输出保存到变量中。

3. 使用jq过滤数组

如果JSON数据中包含数组,那么可以使用jqmap过滤器将数组中的每个元素进行处理。以下是一个例子:

#!/bin/bash

json='
{
  "users": [
    {
      "name": "John",
      "age": 30,
      "city": "New York"
    },
    {
      "name": "Alice",
      "age": 25,
      "city": "Los Angeles"
    }
  ]
}
'

names=$(echo $json | jq -r '.users | map(.name) | join(",")')

echo "Names: $names"

以上例子中,我们使用.users | map(.name)语法将json数据中的每个用户的名字提取出来,并通过join(",")方法将所有名字用逗号分隔成一个字符串。最后,我们将该字符串保存到变量names中。

结论

以上是Bash JQ 输出到变量的介绍,通过jq命令的强大过滤功能与Bash的脚本编程能力结合,我们可以更便捷地处理JSON数据。