![쉘 스크립트에서 오류 포착 건너뛰기](https://rvso.com/image/89179/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%98%A4%EB%A5%98%20%ED%8F%AC%EC%B0%A9%20%EA%B1%B4%EB%84%88%EB%9B%B0%EA%B8%B0.png)
프로그램을 컴파일하는 스크립트가 있습니다. 이 프로그램은 먼저 명령을 사용하여 소스 코드를 컴파일한 configure && make
다음 make test
. 이 스크립트는 set -e
오류를 잡는 데도 사용됩니다.
이제 내가 원하는 것은 set -e
스크립트에 설정된 상태를 유지하고 make test
일부 오류가 발생할 때 스크립트를 계속 실행하는 것입니다. 오류가 발생하더라도 테스트를 실행시키기 위해 를 사용해 보았지만 make -k test
명령에 걸려 set -e
중지됩니다.
또한 어떤 테스트가 실패할지 알고 있으므로 스크립트에서 이러한 오류 포착을 건너뛰도록 지시할 수 있는 방법이 있습니까?
답변1
make test || true
예를 들어
#!/bin/sh
set -e
echo hello
make test || true
echo done
결과는 다음과 같습니다
hello
make: *** No rule to make target `test'. Stop.
done
이 경우 실패는 규칙 누락(Makefile 없음 :-)이었지만 스크립트가 계속되는 것을 볼 수 있습니다.
답변2
set -e
로 뒤집을 수 있습니다 set +e
.
#!/bin/sh
set -e
configure && make
set +e
make test
...