bash에서 명령 (gerrit query)을 실행하고이를 변수에 지정하려고합니다. 나는 bash 스크립트 파일 인 &을 사용하고있다. 명령이 오류를 던지면 (예 : gerrit 쿼리가 실패한 경우), 나는 같은 것을 처리 할 수 있어야한다. 나는 $를 사용하여 마지막으로 종료 상태를 확인할 수 있다는 것을 알고Bash 스크립팅에서 명령의 종료 상태는 항상 true입니다.
var=`ssh -p $GERRIT_PORT_NUMBER $GERRIT_SERVER_NAME gerrit query --current-patch-set $PATCHSET_ID`
: 예를 들어
? bash에서는 위와 같은 경우 변수 할당이 이전 종료 상태 (예 : gerrit 쿼리 실패 상태)를 오버라이드하며 위 명령이 결코 실패하지 않습니다. 항상 사실입니다.
bash의 변수에 할당 된 경우에도 명령의 종료 상태를 처리 할 수있는 방법이 있다면 알려주십시오.
업데이트 : 내 가정이 잘못 여기에 할당 그의 대답에서 종료 상태 찰스 예제와 설명의 최우선을 일으키는 것이 었습니다 올바른지
. 종료 상태가 무시되는 실제 이유는 위 명령의 출력을 종료 상태를 무시하는 범인 인 sed 스크립트로 파이핑했기 때문입니다. 나는이 문제를 해결하는 데 도움이되는 다음을 발견했다. https://unix.stackexchange.com/questions/14270/get-exit-status-of-process-thats-piped-to-another/73180#73180Pipe output and capture exit status in Bash
내가 시도한 완전한 명령.
VAR = ssh -p $GERRIT_PORT_NUMBER $GERRIT_SERVER_NAME gerrit query --current-patch-set $PATCHSET_ID | sed 's/message//'
'gerrit'(예 :'/ bin/false' 또는'sh -c "exit 3"')를 사용하지 않는 버그를 재생산 할 수 있습니까? –
"Gerrit 쿼리가 실패 함"이란 정확히 무엇을 의미합니까? 쿼리가 제로 결과를 반환하거나 쿼리 또는 내부 서버 오류에 구문 문제가 있음을 나타냅니다. 나는 전 사건이 오류 조건을 구성하지 않는다고 주장 할 것이다. –
Hey Magnus, GerrIT_SERVER에 연결할 수 없거나 내부 서버 오류가 있거나 GERRIT_PORT 또는 GERRIT_SERVER_NAME이 잘못되었거나 PATCHSET_ID가 유효하지 않은 경우에도 gerrit 쿼리 오류 ('Gerrit 쿼리가 실패 함')가 발생할 수 있습니다. 존재하지 않거나 존재하지 않습니다. – Jose