주어진 필터가 JSON 데이터 구조에서 데이터를 가져 오는 데 성공했는지 알고 싶습니다. 예를 들면 :jq 필터가 JSON 데이터 구조에서 데이터를 성공적으로 가져 오는 지 어떻게 알 수 있습니까?
###### For the user steve...
% Name=steve
% jq -j --arg Name "$Name" '.[]|select(.user == $Name)|.value' <<<'
[
{"user":"steve", "value":false},
{"user":"tom", "value":true},
{"user":"pat", "value":null},
{"user":"jane", "value":""}
]'
false
% echo $?
0
참고 : 성공적인 결과는 부울 값, null
, 심지어 빈 문자열을 포함 할 수 있습니다.
###### Now for user not in the JSON data...
% Name=mary
% jq -j --arg Name "$Name" '.[]|select(.user == $Name)|.value' <<<'
[
{"user":"steve", "value":false},
{"user":"tom", "value":true},
{"user":"pat", "value":null},
{"user":"jane", "value":""}
]'
% echo $?
0
필터가 JSON 데이터 구조에서 데이터를 가져 오지 않으면이 사실을 알아야합니다. 필터가 0이 아닌 반환 코드를 반환하는 것을 선호합니다.
선택기가 JSON 데이터 구조에서 데이터를 성공적으로 가져오고 데이터를 가져 오지 못하는 경우 어떻게 결정합니까?
중요 : 위의 필터는 예제 일 뿐이며 솔루션은 모든 jq 필터에서 작동해야합니다.
참고 : 평가 환경은 Bash 4.2 이상입니다.
어떤 이유로 나는 당신의 질문에서 명령을 실행할 수 없습니다 (또는) 당신의 논리에서 플래그'-e'의 사용법을 시연 할 수 있습니다, 그것은'오류를 파싱합니다 : parse error : Line 6 , 25 열'내 Mac에서'jq-1.5'에 – Inian
고정. 다시 시도하십시오. 값 키는 인용되지 않았습니다. 나는 위의 예제를 단순화하여'$ (whoami)'를'$ Name'으로 대체했다. 여기서'$ Name'은 스크립트 위의 줄에 명확하게 정의되어있다. –
따옴표로 말하면'--arg Name "$ Name"'을 사용하십시오. 그렇지 않으면 이름이 파싱되는 셸 단어의 수는 완전히 정의되지 않습니다. –