【问题标题】:using jq how do you query from variable which has json [duplicate]使用jq如何从具有json的变量中查询[重复]
【发布时间】:2021-04-01 04:02:52
【问题描述】:

如何使用 jq 查询具有 json 值的变量。下面的命令返回一个 json 分配给 activity 变量。但是从activity变量不确定如何使用jq查询?

activity=`aws autoscaling describe-scaling-activities --profile mfa --auto-scaling-group-name cb-citation-needed --max-items 1`

当我在下面尝试时,变量 activityCause 为空。

activityCause=$activity| jq -r '.Activities[].Cause'

activityCause=`$activity| jq -r '.Activities[].Cause'` i get error for this one

但是,当我尝试在一个命令中查询时,它可以工作

activityCause=`aws autoscaling describe-scaling-activities --profile mfa --auto-scaling-group-name cb-citation-needed --max-items 1 | jq -r '.Activities[].Cause'`

【问题讨论】:

    标签: shell jq


    【解决方案1】:

    第一个命令将 JSON 分配给 activity 变量。

    第二个命令需要更改为通过管道“输入”json,因为activityCause=$activity $activity 被解释为命令,而不是 JSON;

    1. 使用bash Here

      activityCause=$(jq -r '.Activities[].Cause' <<< "$activity")
      
    2. 使用oldschool回声:

      activityCause=$(echo "$activity" | jq -r '.Activities[].Cause')
      

    【讨论】:

    • 提示:echo 可能会弄乱一些字符串,并且在不同系统上的工作方式不同。 printf '%s' "$activity" 更可靠。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 2021-10-27
    • 2018-11-02
    相关资源
    最近更新 更多