---------------------------------------------------------
# 디버깅 - set 옵션들 (-e, -u, -x)
---------------------------------------------------------
set은 쉘의 옵션을 설정하는 명령어이다.
-e, -u 옵션을 설정하면 스크립트에서 문제가 발생한것을 찾을수 있다.
* -e: 쉘 스크립트 실행 중에 0이 아닌 값으로 exit을 한 명령이 있으면 나머지 스크립트를 실행하지 않은 채 exit한다.
* -u: 정의되지 않은 변수(undefined)를 참조하면 에러를 출력하며 바로 exit한다.
* -x: 쉘 스크립트가 실행하는 모든 명령을 화면에 출력한다. 디버깅에 유용하다.
# 쉘스크립트의 도입부에 다음과 같이 적으면 된다.
set -e -u -x
# bash xxx.sh 실행시 옵션 적용
bash -x xxx.sh
bash -eux xxx.sh
---------------------------------------------------------
# example1: 스크립트내에서 -e, -u, -x 설정
---------------------------------------------------------
#!/bin/bash
set -e -u -x
NUM=100
echo $NUM
TIME=`date`
echo $TIME
echo $UNDIFIED
# output
$ bash test.sh
+ NUM=100
+ echo 100
100
++ date
+ TIME='2021년 4월 10일 토요일 03시 19분 28초 KST'
2021년 4월 10일 토요일 03시 19분 28초 KST
test.sh: line 9: UNDIFIED: unbound variable
---------------------------------------------------------
# example2: 스크립트 실행시 -e 옵션 설정
---------------------------------------------------------
#!/bin/bash
echo $UNDIFIED
NUM=100
echo $NUM
TIME=`date`
echo $TIME
# output
$ bash -e test.sh
100
2021년 4월 10일 토요일 03시 21분 42초 KST
---------------------------------------------------------
# 참고사이트
---------------------------------------------------------
https://blog.kkeun.net/computer/2016-08-24-bash-good
https://frankler.tistory.com/59
'쉘스크립트' 카테고리의 다른 글
[Shell Script] IFS(Internal Field Separator)란? (0) | 2021.04.23 |
---|---|
[Shell Script] backfill 작업 수행 스크립트 (0) | 2021.04.22 |
[Shell Script] template source code (0) | 2021.04.15 |
[Shell Script] trap을 이용한 signal 처리방법 (0) | 2021.04.15 |
[Shell Script] 함수(function) (0) | 2021.04.15 |