Error 1
Makefile을 빌드하고 발견되면(일치) 오류를 반환 하고 발견되지 않으면 성공을 반환 하는 GitHub Actions에서 실행되는 간단한 명령을 만들고 있습니다 .
문제가 없어도 실패하거나, 문제가 있어도 실패하지 않는 것 같아요.
이것은 내 전체 명령입니다.
find . -name "Makefile" -exec sh -c 'cd "$(dirname "$0")" && make' {} \; | grep -zqvE "Error 1"
exit 1
이와 같은 출력이 발견되면 다음을 수행하고 싶습니다.
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [compile] Error 1
아니면 0
다른 상황
답변1
! find ...as in the question... | grep -qF 'Error 1'
처음에는 !
파이프의 종료 상태가 무효화됩니다. 파이프의 종료 상태는 명령의 종료 상태이며 해당 문자열이 명령의 출력에 있는 경우 0입니다 grep
.Error 1
find
따라서 Error 1
출력에서 발견 되면 grep
0 종료 상태로 종료하고 !
0이 아닌 값으로 반전합니다.
진단 메시지 는 make
표준 오류 스트림에 기록될 수 있으며, 이 경우 다음을 사용하여 출력을 리디렉션해야 합니다 2>&1
.
! find ...as in the question... 2>&1 | grep -qF 'Error 1'
또한 grep
일치 항목이 발견되면 종료하고 find
데드 파이프에 쓰기를 시도하면 SIGPIPE 신호 수신으로 인해 종료됩니다.
grep
와 함께 사용하려고 합니다 -v
. -v
"이 패턴과 일치하지 않는 행이 있습니까?"라는 질문 으로 생각하면 됩니다 . 이 경우에는~ 할 것이다Error 1
발생 여부에 관계없이 행 불일치입니다 Error 1
.