posted by 귀염둥이채원 2021. 4. 15. 18:51

---------------------------------------------------------

# 디버깅 - 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://118k.tistory.com/201

https://frankler.tistory.com/59