#! /bin/bash -x
set -x
...(trace 적용)...
set +x
jsg@jsg-ubuntu:~$ cat test.sh #!/bin/bash -x [ $1 -lt 100 ] && echo "$1 is less then 100." [ $1 -gt 100 ] && echo "$1 is greater than 100." jsg@jsg-ubuntu:~$ ./test.sh 50 + '[' 50 -lt 100 ']' + echo '50 is less then 100.' 50 is less then 100. + '[' 50 -gt 100 ']'
#! /bin/bash -v
set -v
set +v
jsg@jsg-ubuntu:~$ cat test.sh #!/bin/bash -v [ $1 -lt 100 ] && echo "$1 is less then 100." [ $1 -gt 100 ] && echo "$1 is greater than 100." jsg@jsg-ubuntu:~$ ./test.sh 50 #!/bin/bash -v [ $1 -lt 100 ] && echo "$1 is less then 100." 50 is less then 100. [ $1 -gt 100 ] && echo "$1 is greater than 100."
trap 이 설정되지 않으면 default handler로 작동
trap command/function SIGSPEC
: 시그널을 받으면 명령/함수 실행
trap - SIGSPEC
: default handler로 초기화
trap -p
: trap 리스트
SIGSPEC | 행동 |
---|---|
EXIT | shell/subshell이 종료될 떄 호출 |
ERR | 에러 발생시 호출 |
DEBUG | 명령실행 전 매번 호출 |
RETURN | 함수나 모듈파일에서 리턴될 때 호출 |
SIGXXX | 시그널 받을시 호출 |
#!/bin/bash function print_time () { echo "Current time = [$(date +%H:%M:%S)]" } trap 'echo ignored signal' SIGHUP SIGINT trap 'echo received SIGTERM; exit 0' SIGTERM trap print_time SIGUSR1 while : ; do sleep 1 done
jsg@jsg-ubuntu:~$ pkill -USR1 test jsg@jsg-ubuntu:~$ pkill -SIGINT test jsg@jsg-ubuntu:~$ pkill -SIGTERM test
Current time = [04:27:12] ignored signal received SIGTERM