Post

shell 'set' 사용법

shell 'set' 사용법

🐚 Bash set 명령

set 명령은 쉘 동작 방식을 제어하는 명령으로, 스크립트 실행 시 다양한 옵션을 켜거나 끌 수 있습니다. (쉘 스크립트가 작동하는 방식을 세밀하게 조정 가능)


1️⃣ 기본 문법

1
set [옵션]
  • 옵션은 - 또는 +로 설정/해제 가능

    • - : 옵션 활성화
    • + : 옵션 비활성화
1
2
set -e   # 스크립트 오류 시 즉시 종료
set +e   # 스크립트 오류 발생해도 종료하지 않음

2️⃣ 주요 옵션

옵션의미설명/예제 
-eerrexit명령 실패 시 스크립트 종료
ex: ls /nonexistent → 스크립트 종료
 
-unounset정의되지 않은 변수 접근 시 스크립트 종료
ex: echo $UNDEF_VAR → 종료
 
-o pipefailpipefail파이프라인 중 하나라도 실패하면 전체 실패로 간주
ex: false | true → 오류 발생
 
-xxtrace실행되는 명령어를 출력 (디버깅용)
ex: set -x 후 명령 실행
 
-vverbose입력 라인을 그대로 출력 (스크립트가 읽는 내용) 
-nnoexec명령 실행하지 않고 문법 검사만 수행 
-fnoglob글로벌 패턴(*) 확장 비활성화 
-o noglob동일glob 패턴 비활성화 
-iignoreeofCtrl+D 입력으로 쉘 종료 방지 

3️⃣ 옵션 조합 예제

1
2
3
4
5
6
#!/bin/bash
set -euo pipefail
set -x

echo "시작"
echo $UNDEF_VAR    # set -u 때문에 스크립트 종료
  • set -euo pipefail 조합: 가장 안전하게 스크립트 작성

    • -e : 오류 시 종료
    • -u : 정의되지 않은 변수 접근 금지
    • -o pipefail : 파이프라인 오류 감지

4️⃣ 임시 옵션 변경

  • 특정 명령에서만 옵션 해제:
1
2
3
set +e        # -e 옵션 해제
command       # 오류 발생해도 종료 안됨
set -e        # 다시 -e 활성화

5️⃣ 참고

  • 모든 옵션 확인:
1
set -o   # 활성/비활성 옵션 표시
  • 특정 옵션 상태 확인:
1
echo $-   # 현재 활성화된 옵션 문자 표시
  • set스크립트 안정성, 디버깅, 자동화 환경에서 필수적으로 사용됨

&&, || 와의 관계

  • && : 앞 명령이 성공해야 뒤 명령 실행
  •  : 앞 명령이 실패해야 뒤 명령 실행
  • set -e : 스크립트 전체에 적용, 어떤 명령 실패 시 즉시 종료
비교 항목set -e&& /  
적용 범위스크립트 전체개별 명령어  
동작 방식실패 시 즉시 종료조건부 실행  
복합 사용가능 (set -e + &&/ )가능 (set -e로 스크립트 안정성 유지하면서 조건부 실행)

💡 Tip

  • 배치/자동화 스크립트 작성 시 항상 set -euo pipefail 추천
  • 디버깅 시 -x를 추가하면 어떤 명령이 실행되는지 확인 가능
This post is licensed under CC BY 4.0 by the author.