본문 바로가기
Q&A해결2026년 7월 27일1분 읽기

bash에서 set -e 걸었는데 명령이 실패해도 스크립트가 안 멈추고 그냥 지나갑니다

b
bash_seongmin
조회 876댓글 2

배포 스크립트 맨 위에 set -euo pipefail 넣어서 어디서 실패하면 바로 죽게 해놨는데, 중간에 분명히 실패하는 명령이 있는데도 스크립트가 그냥 끝까지 진행돼서 잘못된 결과가 배포됐습니다.

문제 구간을 줄여보니 이런 식입니다. 함수 안에서 검사하고, 그 함수를 || 로 감싸서 쓰고 있어요.

set -euo pipefail

check() {
  grep -q "OK" build.log   # 실패하면 여기서 멈추길 기대
  do_deploy
}

check || echo "check failed, continuing anyway"

grep이 실패하면 set -e 때문에 함수가 거기서 멈추고 스크립트 전체가 죽을 줄 알았는데, do_deploy 가 그냥 실행돼 버립니다. set -e 가 함수 안에서는 안 먹는 건가요?

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록