'전체 글'에 해당되는 글 120건

  1. 2021.04.15 [Shell Script] 디버깅
  2. 2021.04.15 [Shell Script] template source code
  3. 2021.04.15 [Shell Script] trap을 이용한 signal 처리방법
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

 

posted by 귀염둥이채원 2021. 4. 15. 17:22

#!/bin/bash
# -- ABOUT THIS PROGRAM: ------------------------------------------------------
#
# Author:       fang
# Version:      1.0.0
# Description:  description goes here
#
# ------------------------------------------------------------------------------
# | VARIABLES                                                                  |
# ------------------------------------------------------------------------------
VERSION="1.0.0"

# ------------------------------------------------------------------------------
# | UTILS                                                                      |
# ------------------------------------------------------------------------------
log_dbg() {
    printf "$(tput setaf 3)→ %s$(tput sgr0)\n" "$@"
}

log_svc() {
    printf "$(tput setaf 76)✔ %s$(tput sgr0)\n" "$@"
}

log_err() {
    printf "$(tput setaf 1)✖ %s$(tput sgr0)\n" "$@"
}

# ------------------------------------------------------------------------------
# | MAIN FUNCTIONS                                                             |
# ------------------------------------------------------------------------------
usage() {
    cat <<EOF
------------------------------------------------------------------------------
| DESCRIPTION
------------------------------------------------------------------------------
Usage: $0 [options]
Example: $0

Options:
    -h, --help      output program instructions
    -v, --version   output program version

EOF
}

version() {
    echo "$0: v$VERSION"
}

run() {
    # your code goes here
    log_dbg "log_dbg"
    log_svc "log_svc"
    log_err "log_err"
}

# ------------------------------------------------------------------------------
# | INITIALIZE PROGRAM                                                         |
# ------------------------------------------------------------------------------
main() {
    if [[ "${1}" == "-h" || "${1}" == "--help" ]]; then
        usage ${1}
        exit 1
    elif [[ "${1}" == "-v" || "${1}" == "--version" ]]; then
        version ${1}
        exit 1
    else
        run
    fi
}

# Initialize
main $*

posted by 귀염둥이채원 2021. 4. 15. 13:35

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

# trap example

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

#!/bin/bash

# bash trap command

trap bashtrap INT

 

# bash clear screen command

clear

 

# bash trap function is executed when CTRL-C is pressed:

# bash prints message => Executing bash trap subrutine !

bashtrap() {

echo "CTRL+C Detected !...executing bash trap !"

}

 

# for loop from 1/10 to 10/10

for a in $(seq 1 10); do

echo "$a/10 to Exit."

sleep 1

done

echo "Exit Bash Trap Example!!!"

 

# output1

$ bash test.sh

1/10 to Exit.

2/10 to Exit.

3/10 to Exit.

4/10 to Exit.

5/10 to Exit.

6/10 to Exit.

7/10 to Exit.

8/10 to Exit.

9/10 to Exit.

10/10 to Exit.

Exit Bash Trap Example!!!

 

# output2

$ bash test.sh

1/10 to Exit.

2/10 to Exit.

^CCTRL+C Detected !...executing bash trap !

3/10 to Exit.

^CCTRL+C Detected !...executing bash trap !

4/10 to Exit.

^CCTRL+C Detected !...executing bash trap !

5/10 to Exit.

^CCTRL+C Detected !...executing bash trap !

6/10 to Exit.

7/10 to Exit.

8/10 to Exit.

9/10 to Exit.

^CCTRL+C Detected !...executing bash trap !

10/10 to Exit.

Exit Bash Trap Example!!!

 

'쉘스크립트' 카테고리의 다른 글

[Shell Script] 디버깅  (0) 2021.04.15
[Shell Script] template source code  (0) 2021.04.15
[Shell Script] 함수(function)  (0) 2021.04.15
[Shell Script] 반복문(while)  (0) 2021.04.15
[Shell Script] 반복문(for)  (0) 2021.04.15