변수를 사용하는 경우에만 JQ 명령의 결과가 null입니다.

변수를 사용하는 경우에만 JQ 명령의 결과가 null입니다.

jqJSON 파일에서 값을 가져올 수 있도록 일부 JSON 구문 분석을 사용하려고 합니다 . 설정은 JSON 파일이 있고 jq키를 수동으로 입력하여 명령을 실행하면 작동한다는 것입니다. 그러나 or env를 사용하려고 하면 --args실패합니다.null

암호

stripped_string=$(echo $key | tr -d '"' | tr -d ',')
jq -r --arg str "${stripped_string}" '.data."$str"' 1password.json

echo올바른 값을 얻고 있음 을 확인했으며 이를 키로 바꾸면 제대로 작동합니다 stripped_string.$str

이 명령이 반환되는 값의 키로 jq작동하도록 하려면 어떻게 해야 합니까?stripped_string

정보를 추가하려면 편집하세요.

$key : "JON_CONSUMER_KEY"

단축된 1password.json

"data": {
        "JON_CONSUMER_KEY": "<value here>",
}

답변1

먼저 데이터가 유효한 JSON이라고 가정합니다.

{
   "data": { "JON_CONSUMER_KEY": "<value here>" }
}

...여기는 data최상위 키이며 JON_CONSUMER_KEY다음과 같이 사용자가 제공한 문자열을 사용하여 해당 키의 디코딩된(원시) 값을 얻을 수 있습니다.data

$ mykey=JON_CONSUMER_KEY
$ jq -r --arg key "$mykey" '.data[$key]' file
<value here>

하위 키 값을 추출하는 구문을 참고하세요 data.

.data."$key"키가 다음과 같은 경우 사용하면 작동합니다.문자 그대로 $key. 이 열쇠가 없으면 자연스럽게 돌아올 것입니다 null.

관련 정보