shell 'set' 사용법
shell 'set' 사용법
🐚 Bash set 명령
set 명령은 쉘 동작 방식을 제어하는 명령으로, 스크립트 실행 시 다양한 옵션을 켜거나 끌 수 있습니다. (쉘 스크립트가 작동하는 방식을 세밀하게 조정 가능)
1️⃣ 기본 문법
1
set [옵션]
옵션은
-또는+로 설정/해제 가능-: 옵션 활성화+: 옵션 비활성화
1
2
set -e # 스크립트 오류 시 즉시 종료
set +e # 스크립트 오류 발생해도 종료하지 않음
2️⃣ 주요 옵션
| 옵션 | 의미 | 설명/예제 | |
|---|---|---|---|
-e | errexit | 명령 실패 시 스크립트 종료 ex: ls /nonexistent → 스크립트 종료 | |
-u | nounset | 정의되지 않은 변수 접근 시 스크립트 종료 ex: echo $UNDEF_VAR → 종료 | |
-o pipefail | pipefail | 파이프라인 중 하나라도 실패하면 전체 실패로 간주 ex: false | true → 오류 발생 | |
-x | xtrace | 실행되는 명령어를 출력 (디버깅용) ex: set -x 후 명령 실행 | |
-v | verbose | 입력 라인을 그대로 출력 (스크립트가 읽는 내용) | |
-n | noexec | 명령 실행하지 않고 문법 검사만 수행 | |
-f | noglob | 글로벌 패턴(*) 확장 비활성화 | |
-o noglob | 동일 | glob 패턴 비활성화 | |
-i | ignoreeof | Ctrl+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.