Bash 변수를 JSON 객체에 키로 추가

Bash 변수를 JSON 객체에 키로 추가

kubectl에서 json을 추출하는 명령을 실행 중이고 해당 json을 가져와서 다른 json 배열에 입력해야 합니다.

현재 내 명령은 다음과 같습니다

kubectl get ingress -o json | jq --arg context "$i" '{"$context":[{namespace: .items[].metadata.namespace, host: .items[].spec.rules[].host}]}'

하지만 내 json 응답은 다음과 같습니다.

{
  "$context": [
    {
      "namespace": "test",
      "host": "test.test.com"
    }
  ]
}

나는 본질적으로 내 json 출력이 문자열 "$context"가 아닌 bash 변수 $i의 값을 포함하도록 $context 변수를 구문 분석하기를 원합니다. 어떤 도움을 주셔서 감사합니다!

답변1

jq에서 객체를 생성할 때 핵심은 "식별자와 유사"하지 않은지 여부입니다.~ 해야 하다괄호 안에:

$ cat file
{"items":[{"metadata":{"namespace":"test"}, "spec":{"rules":[{"host":"test.test.com"}]}}]}

$ jq --arg context "foo" '{($context): [{namespace: .items[].metadata.namespace, host: .items[].spec.rules[].host}]}' file
# .........................^........^
{
  "foo": [
    {
      "namespace": "test",
      "host": "test.test.com"
    }
  ]
}

"likeidentifier" == "영숫자와 밑줄로 구성되며 숫자로 시작하지 않습니다."

관련 정보