Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Linux
- CKA
- kotlin querydsl
- 오블완
- CloudWatch
- AI
- 기록으로 실력을 쌓자
- APM
- 정보처리기사 실기
- Kubernetes
- aws
- 정보처리기사 실기 기출문제
- 코틀린 코루틴의 정석
- IntelliJ
- minikube
- MySQL
- Java
- CKA 기출문제
- PETERICA
- 정보처리기사실기 기출문제
- 티스토리챌린지
- Spring
- AWS EKS
- kotlin coroutine
- kotlin
- kotlin spring
- Pinpoint
- Elasticsearch
- mysql 튜닝
- 공부
Archives
- Today
- Total
피터의 개발이야기
[linux] Set -xe 옵션, 디버깅 및 오류 처리 기능 본문
반응형
ㅁ 들어가며
linux 서버를 다르면서 많은 스크립트를 작성하고 실행하게 된다. 이럴 때에 스크립트의 디버깅에 유용한 정보를 알게 되어 정리하였다.
ㅁ set -xe 옵션?
set -xe 옵션은 쉘 스크립트 실행 시 유용한 디버깅 및 오류 처리 기능을 제공한다.
ㅁ 오류 즉시 감지(-e 옵션)
ㅇ "errexit"의 약자로, 스크립트 실행 중 오류가 발생하면 즉시 실행을 중단한다.
ㅇ 오류 전파 방지: 오류가 발생한 즉시 스크립트가 종료되어, 오류로 인한 추가적인 문제 발생을 방지한다.
ㅇ 신속한 디버깅: 오류 발생 지점을 빠르게 파악할 수 있어 디버깅 시간을 단축할 수 있다.
ㅁ 명령어 추적 (-x 옵션)
ㅇ "xtrace"의 약자로, 실행되는 각 명령어를 화면에 출력한다.
ㅇ 실행 흐름 파악: 스크립트의 실행 과정을 단계별로 확인할 수 있어 로직 이해가 용이하다.
ㅇ 변수 확장 확인: 변수가 어떻게 저장되는지 실시간으로 볼 수 있어 예상치 못한 동작을 쉽게 파악할 수 있다.
ㅁ 일반적 스크립트 실행
#!/bin/bash
# 변수 설정
NAME="John"
AGE=30
# 간단한 계산
NEXT_YEAR_AGE=$((AGE + 1))
# 조건문
if [ $AGE -ge 18 ]; then
echo "$NAME is an adult."
else
echo "$NAME is a minor."
fi
# 루프
for i in {1..3}; do
echo "Iteration $i"
done
# 함수 정의 및 호출
greet() {
echo "Hello, $1!"
}
greet $NAME
# 존재하지 않는 파일 읽기 시도 (오류 발생)
cat non_existent_file.txt
echo "위 오류와 별개로 다음 라인이 실행된다."
ㅇ just.sh를 작성하였다.
$ ./just.sh
John is an adult.
Iteration 1
Iteration 2
Iteration 3
Hello, John!
cat: non_existent_file.txt: No such file or directory
위 오류와 별개로 다음 라인이 실행된다.
ㅁ Set 옵션 주고 실행
#!/bin/bash
# 스크립트 시작 시 -xe 옵션 설정
set -xe
# 변수 설정
NAME="John"
AGE=30
# 간단한 계산
NEXT_YEAR_AGE=$((AGE + 1))
# 조건문
if [ $AGE -ge 18 ]; then
echo "$NAME is an adult."
else
echo "$NAME is a minor."
fi
# 루프
for i in {1..3}; do
echo "Iteration $i"
done
# 함수 정의 및 호출
greet() {
echo "Hello, $1!"
}
greet $NAME
# 존재하지 않는 파일 읽기 시도 (오류 발생)
cat non_existent_file.txt
echo "이 라인은 실행되지 않는다."
ㅇ set -ex 옵션을 추가하였다.
$ ./test_set.sh
+ NAME=John
+ AGE=30
+ NEXT_YEAR_AGE=31
+ '[' 30 -ge 18 ']'
+ echo 'John is an adult.'
John is an adult.
+ for i in '{1..3}'
+ echo 'Iteration 1'
Iteration 1
+ for i in '{1..3}'
+ echo 'Iteration 2'
Iteration 2
+ for i in '{1..3}'
+ echo 'Iteration 3'
Iteration 3
+ greet John
+ echo 'Hello, John!'
Hello, John!
+ cat non_existent_file.txt
cat: non_existent_file.txt: No such file or directory
ㅇ +에 출력되는 정보를 통해 스크립트의 실행 과정과 변수의 값을 알 수 있다.
ㅁ 함께 보면 좋은 사이트
반응형
'Linux > Shell Script' 카테고리의 다른 글
[Shell] linux shell script 반복문 (0) | 2024.10.16 |
---|---|
[shell] 파일 폴더 압축 tar shell (0) | 2024.08.07 |
터미널에서 맥미니 재기동 및 Docker 가동 방법 (0) | 2024.07.15 |
[shell] JPATH 사용법 (0) | 2024.01.28 |
디렉토리별 용량 정렬, du 크기별 정렬 방법 (0) | 2024.01.16 |
Comments