Bash 스크립트의 디렉토리 차이점

Bash 스크립트의 디렉토리 차이점

두 개의 아카이브(jar 파일)를 두 개의 디렉터리로 확장한 다음 두 폴더를 비교하는 bash 스크립트가 있습니다. 차이점을 파일로 파이프하고 싶기 때문에 bash 파일에서 이 작업을 수행합니다.

diff -r $originalJarExtracted $assembledJarExtracted >target/$diffList

이것이 작동하는 동안 스크립트도 중지되며 그 이후의 모든 항목은 실행되지 않습니다. 출력을 파일로 파이프하고 스크립트가 계속 실행되도록 diff를 얻으려면 어떻게 해야 합니까? diff의 정보와 매뉴얼 페이지를 보았지만 제대로 작동하지 못했습니다. 그런데 저는 Mac에서 스크립트를 실행하고 있습니다.

참고로 스크립트는 다음과 같습니다.깃허브에서

답변1

추측: 스크립트가 set -e(동의어 set -o errexit: )에서 실행 중입니다. 이로 인해 명령이 0이 아닌 상태(보통 실패를 나타냄)를 반환하면 셸이 종료됩니다. 그렇다면 차이점이 발견되면 상태 1이 반환되므로 차이점이 발견되면 diff종료됩니다 . diff이것이 문제라면 행을 다음으로 변경하십시오.

diff -r "$originalJarExtracted" "$assembledJarExtracted" >"target/$diffList" ||
[ $? -eq 1 ]

diff그러면 스크립트는 0(차이 없음) 또는 1(차이) 이외의 상태가 반환되는 경우, 즉 파일 누락과 같은 오류가 있는 경우에만 종료됩니다.

관련 정보