반응형
문자열 변수를 파일이 아닌 jq로 전달해도 될까요?
JSON 문자열을 bash의 배열로 변환합니다.JSON 문자열은 인수로서 bash 스크립트에 전달됩니다(파일에 존재하지 않습니다).
임시 파일을 사용하지 않고 그것을 실현할 수 있는 방법이 있습니까?
이와 마찬가지로 다음과 같습니다.
script.sh
#! /bin/bash
json_data='{"key":"value"}'
jq '.key' $json_data
jq: error: Could not open file {key:value}: No such file or directory
여기서 bash 문자열을 사용하는 것이 좋습니다.
jq '.key' <<< "$json_data"
원래 질문에서 주어진 변수 "json_data"의 값이 유효하지 않기 때문에 이 응답은 여전히 두 가지 경우(거의 유효한 JSON)를 모두 포함합니다.
유효한 JSON
"$json_data"가 유효한 JSON 값을 보유하고 있는 경우 이 페이지에서 언급하지 않은 두 가지 대안을 제시합니다.
--argjson
예를 들어 다음과 같습니다.
jq -n --argjson data "$json_data" '$data.key'
env
셸 변수가 환경변수가 아닌 경우:
json_data="$json_data" jq -n 'env.json_data | fromjson.key'
거의 유효한 JSON
$json_data가 JSON으로 유효하지 않지만 jq 식으로는 유효한 경우 다음 텍스트에서 설명하는 방법을 사용할 수 있습니다.
$ json_data='{key:"value"}'
$ jq -n "$json_data" | jq .key
"value"
bash 사용:echo "$json_data" | jq '.key'
그렇고 말고요.배쉬에게 대신 파일을 주라고 해
jq '.key' <(echo "$json_data")
그리고 반드시 bash로 실행해. sh가 아니라.
인라인 명령을 사용하려면 Mac에서 다음 작업을 찾았습니다.
echo '{"key":"value"}' | jq .key
#! /bin/bash
json_data='{"key":"value"}'
echo $json_data | jq --raw-output '.key'
이 작업을 수행하려는 경우.sh
파일, 이게 나한테 효과가 있었어:
local json_data $(getJiraIssue "$1") # store JSON in var
echo `jq -n "$json_data" | jq '.fields.summary'` # pass that JSON var to jq
그냥 해
$ jq '.key' <<< $'{"key":"value"}'
"value"
언급URL : https://stackoverflow.com/questions/47105490/can-i-pass-a-string-variable-to-jq-not-the-file
반응형
'programing' 카테고리의 다른 글
스프링 부트 핫 스왑 (0) | 2023.03.04 |
---|---|
스프링 부트 응용 프로그램 시작 중 MethodArgumentNotValidException에 대해 매핑된 모호한 @ExceptionHandler 메서드를 얻는 중 (0) | 2023.03.04 |
각도 UI-라우터 다중 보기 (0) | 2023.03.04 |
스타일 컴포넌트 대 SCSS(SCSS) 이하 (0) | 2023.03.04 |
Json 및 순환 참조 예외 (0) | 2023.03.04 |