jq -n --arg KEY 'no leading zero' --arg VAL '.13452' '.+={$KEY:$VAL}'
출력을 생성하기 위해 bash 터미널에서 이 명령을 시도하고 있습니다 {"no leading zero":".13452"}
.
하지만 다음과 같은 오류가 발생합니다.
jq: error: syntax error, unexpected ':', expecting '}' (Unix shell quoting issues?) at <top-level>, line 1:
.+={$KEY:$VAL}
jq: error: May need parentheses around object key expression at <top-level>, line 1:
.+={$KEY:$VAL}
jq: 2 compile errors
{"no leading zero":".13452"}
매개변수를 사용하여 출력을 얻도록 명령을 수정하려면 어떻게 해야 합니까 ?
감사해요.
답변1
당신은 그것을 사용할 수 있습니다문자열 보간:
jq -n --arg KEY 'no leading zero' --arg VAL '.13452' '{"\($KEY)":$VAL}'
생산하다
{
"no leading zero": ".13452"
}
답변2
jq
가장 일반적인 방법은 세 가지 방법 중 하나로 객체에 키와 해당 값을 추가하는 것입니다.
- ( )처럼 기존 객체에 키와 값이 있는 객체를 "추가"
. += { key: value }
하거나, - 키를 생성하고 기존 객체(
.key = value
)에 직접 값을 할당하거나 - 변수를 사용할 때 현명하게 이름을 지정하면 간단히 ( )를 사용하고 추가
--arg
할 수 있습니다 .$ARGS.named
. += $ARGS.named
첫 번째 경우, 변수를 사용할 때 키는 평가할 표현식으로 처리됩니다. 즉, 키를 괄호로 묶어야 합니다(오류 메시지는 이 사실을 직접적으로 암시합니다).
. += { ($key): $value }
예를 들어:
jq -n --arg key 'no leading zero' --arg value '.13452' '{ ($key): $value }'
(추가할 개체가 없으므로 . +=
필요하지 않습니다.)
두 번째 경우에는 다음 .[$key]
구문을 사용해야 합니다.
.[$key] = $value
예를 들어:
jq -n --arg key 'no leading zero' --arg value '.13452' '.[$key] = $value'
세 번째 경우에는 다음을 사용하십시오.
. += $ARGS.named
예를 들어:
jq -n --arg 'no leading zero' '.13452' '$ARGS.named'
(추가할 개체가 없으므로 . +=
필요하지 않습니다.)
을 사용할 수도 있습니다 jo
. 이 경우 구문이 더 단순해지거나 적어도 명령이 더 짧아집니다.
jo -- -s 'no leading zero'=.13452
(이렇게 하면 -s
숫자가 문자열로 해석됩니다.)