주어진 선택기가 jq
인 경우 입력기가 주어지면 선택기가 성공했는지 실패했는지 알고 싶습니다.null 또는 false가 유효한 결과일지도 모르는 경우에 jq 선택기가 성공했는지 실패했는지 어떻게 판단 할 수 있습니까?
% jq -re .bad <<<'{}'
null
% echo $?
1
%
그러나 잘못 다음은 (지금까지 내 요구가 가서) 오류 상태를 나타냅니다 : 위의 문제가 있다는 것입니다
% jq -re .key <<<'{"key":false}'
false
% echo $?
1
%
예를 들어, 올바르게 다음은 오류 상태를 나타냅니다 마지막 출력 값이 false
또는 null
이면 -e 옵션은 1의 리턴 상태를 제공합니다. 그러나 false 및 null 값이 JSON 입력에있는 경우이 반환 상태는 오류가 발생했다는 잘못된 인상을줍니다.
나는 강제로 반환 코드 1의 경우 키가 있는지 확인합니다. 예를 들어
#!/bin/bash
Result=$(jq -re .key <<<'{"key":false}')
Status=$?
if [[ $Status -eq 1 ]] ; then
jq -re '. | has("key")' <<<'{"key":false}' && (exit 0) || (exit 1)
else
(exit $Status)
fi
# At this point $? can be relied on to indicate success/failure
은 상기 용액을 0 (1)의 반송 상태를 변경하고 간단한 JQ 선택기 허용하지만,이 솔루션은 거짓 또는 null 유효한 결과를 생성 할 수 계산 선택기의 만족스럽지 않은 것이다.
그래서하는 JQ 선택이 정말 성공 또는 false
및 null
같은 결과가 될 수도 있고 유효 또는 무효가 선택 및 입력
솔루션은 Bash 4.2 이상에서 수행해야합니다.
불행히도, 선택자는 내가 질문에 넣은 경우가 아닙니다. 그리고, 나는 이미 추가 파싱이 필요없는이 경우에 대한 해결책을 게시했다. 계산 선택기 (비 키 선택기)에서는 프로세스가 단순하지 않습니다. 궁극적으로는 오류 상태를 나타내는 jq 옵션입니다. 이제는 해결 방법/솔루션을 별도로 간단한 선택기 경우 다른 계산 선택기를 처리하는 조합이 될 필요가 있다고 생각 해요. –