Bash 스 크 립 트 에 내 장 된 디 버 깅 방법

Bash 로 쓴 스 크 립 트 도 디 버 깅 할 수 있 으 며 Python,Perl 등 해석 형 언어 와 같 습 니 다.servinfo 라 는 스 크 립 트 를 새로 만 들 고 실행 가능 한 권한 을 추가 합 니 다:

$ vi servinfo

#!/bin/bash

echo "Hostname: $(hostname)"
echo "Date: $(date)"
echo "Kernel: $(uname -mrs)"

$ chmod +x servinfo

bash-x 로 위 스 크 립 트 를 디 버 깅 합 니 다.Bash 는 줄 마다 스 크 립 트 를 인쇄 한 다음 줄 마다 스 크 립 트 의 실행 결 과 를 출력 합 니 다.

$ bash -x servinfo
++ hostname
+ echo 'Hostname: vpsee'
Hostname: vpsee
++ date
+ echo 'Date: Thu Sep  3 19:33:48 SAST 2009'
Date: Thu Sep  3 19:33:48 SAST 2009
++ uname -mrs
+ echo 'Kernel: Linux 2.6.18-128.4.1.el5 i686'
Kernel: Linux 2.6.18-128.4.1.el5 i686
줄 번 호 를 동시에 인쇄 하려 면 스 크 립 트 시작 에 다음 을 추가 할 수 있 습 니 다.

export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
실행 결 과 는:

$ bash -x servinfo
+ export 'PS4=+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
+ PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}: '
++4:5:: hostname
+4:5:: echo 'Hostname: vpsee'
Hostname: vpsee
++4:6:: date
+4:6:: echo 'Date: Thu Sep  3 19:42:06 SAST 2009'
Date: Thu Sep  3 19:42:06 SAST 2009
++4:7:: uname -mrs
+4:7:: echo 'Kernel: Linux 2.6.18-128.4.1.el5 i686'
Kernel: Linux 2.6.18-128.4.1.el5 i686
그 중 몇 줄 의 스 크 립 트 만 디 버 깅 하려 면 set-x 와 set+x 로 디 버 깅 할 부분 을 포함 시 킬 수 있 습 니 다.

#!/bin/bash

echo "Hostname: $(hostname)"
set -x
echo "Date: $(date)"
set +x
echo "Kernel: $(uname -mrs)"

이 럴 때 스 크 립 트 를 직접 실행 할 수 있 습 니 다.bash-x 를 실행 할 필요 가 없습니다.

$ ./servinfo
Hostname: vpsee
++ date
+ echo 'Date: Thu Sep  3 19:46:53 SAST 2009'
Date: Thu Sep  3 19:46:53 SAST 2009
+ set +x
Kernel: Linux 2.6.18-128.4.1.el5 i686
매우 복잡 한 Bash 스 크 립 트 를 디 버 깅 하려 면 전문 적 인 디 버 깅 도 구 를 사용 하 는 것 을 권장 합 니 다.예 를 들 어bashdb

좋은 웹페이지 즐겨찾기