개인 학습용 자료로 GPT 찾아본 내용.
부정확하면 다시 찾아보세요.
------
set -o pipefail 는 bash 같은 셸에서 파이프라인(|)의 에러 처리 방식을 바꾸는 옵션이야.
🔧 기본 동작 (pipefail 없이)
일반적으로 쉘에서 파이프라인은 맨 마지막 명령의 종료 코드만 기준으로 성공/실패를 판단해.
false | true
echo $?
👉 결과: 0 (성공)
- false는 실패(1)
- true는 성공(0)
- 👉 마지막 명령(true)이 성공이므로 전체가 성공으로 처리됨
➡️ 앞에서 실패해도 무시되는 문제 있음
✅ set -o pipefail 적용 시
set -o pipefail
false | true
echo $?
👉 결과: 1 (실패)
- 파이프라인 내 하나라도 실패하면 전체 실패로 처리
- 정확히는: 가장 마지막으로 실패한 명령의 exit code 반환
📌 왜 쓰냐?
실무에서 매우 중요함 (특히 DevOps / 스크립트)
예:
cat file.txt | grep "keyword" | sort
- file.txt 없으면 cat 실패
- 하지만 grep, sort는 정상 실행 → 결과적으로 성공처럼 보임 ❌
👉 pipefail 없으면 오류를 놓침
👉 pipefail 있으면:
- cat 실패 → 전체 실패 → 바로 감지 가능 ✅
💡 보통 같이 쓰는 옵션
set -euo pipefail
의미:
- -e: 에러 나면 즉시 종료
- -u: 정의 안된 변수 사용 시 에러
- -o pipefail: 파이프라인 에러 감지
👉 "안전한 bash 스크립트 기본 3종 세트"
🔥 한 줄 요약
👉 set -o pipefail = 파이프라인 중간에서 실패해도 무조건 실패로 처리하게 만드는 옵션
'C.S. > Linux' 카테고리의 다른 글
| WSL 사용하기 (0) | 2023.02.02 |
|---|---|
| Linux 에서 samba 서버에 접근하기. (0) | 2011.09.01 |
| Linux 에서 Java (sun-java6-jdk, jre, sun-java5-jdk, jre) 설치 문제. (0) | 2011.09.01 |
| Linux 사용자 추가 (0) | 2011.08.26 |
| Ubuntu 에서 sudo 사용하기. (0) | 2011.08.24 |