셸 스 크 립 트 디 버 깅 에서 set 옵션 열기

11288 단어
 디버그 옵션 개관 설정
짧 은 기호
긴 부호
결실
set -f
set -o noglob
파일 이름 확장 에 사용 할 특수 문 자 를 금지 합 니 다.
set -v
set -o verbose
셸 의 입력 줄 을 인쇄 합 니 다.
set -x
set -o xtrace
명령 을 실행 하기 전에 명령 을 인쇄 합 니 다.
우리 가 셸 스 크 립 트 를 디 버 깅 할 때 피 할 수 없 는 문제 가 발생 할 수 있 습 니 다. 이 럴 때 스 크 립 트 가 어디 에 있 는 지, 어떤 변수 에 문제 가 생 겼 는 지 추적 할 수 있다 면 우리 의 디 버 깅 에 도움 이 될 것 입 니 다. 여기 서 셸 안의 추적 옵션 을 소개 합 니 다. 여기 서 set 명령 을 소개 합 니 다. 스 크 립 트 에 set – x 를 추가 한다 고 가정 합 니 다.스 크 립 트 가 실 행 된 불필요 한 출력 을 표시 할 수 있 습 니 다. 스 크 립 트 파일 에 명령 set – x 를 추가 하면 set 명령 이후 실 행 된 모든 명령 과 불 러 오 는 명령 줄 의 모든 인자 가 표 시 됩 니 다. 줄 마다 추가 번호 (+) 를 추가 하여 추적 출력 표지 임 을 알려 줍 니 다. 하위 셸 에서 실 행 된 셸 추적 명령 은 2 개의 호출 번호 (+) 를 추가 합 니 다.
데모 스 크 립 트 를 살 펴 보 겠 습 니 다.
   1:  [root@centos6 shell]# cat set-x.sh
   2:  #!/bin/bash
   3:  #set -x
   4:  echo -n "Can you write device drivers?"
   5:  read answer
   6:  answer=$(echo $answer | tr [a-z] [A-Z])
   7:  if [ $answer = Y ]
   8:  then
   9:          echo "Wow,you must be very skilled"
  10:  else
  11:          echo "Neither can I,I am just an example shell script"
  12:  fi
  13:  [root@centos6 shell]# sh set-x.sh
  14:  Can you write device drivers?y
  15:  Wow,you must be very skilled
  16:  [root@centos6 shell]# sh set-x.sh
  17:  Can you write device drivers?n
  18:  Neither can I,I am just an example shell script
  19:  [root@centos6 shell]#

 
위의 스 크 립 트 내용 중, 나 는 set – x  이 줄 의 주석 이 떨 어 졌 습 니 다. 우 리 는 평소에 이런 효 과 를 보 았 습 니 다. 다음은 set – x 이 옵션 을 열 어서 효 과 를 보 겠 습 니 다.
   1:  [root@centos6 shell]# sh set-x.sh
   2:  + echo -n 'Can you write device drivers?'
   3:  Can you write device drivers?+ read answer
   4:  y
   5:  ++ echo y
   6:  ++ tr '[a-z]' '[A-Z]'
   7:  + answer=Y
   8:  + '[' Y = Y ']'
   9:  + echo 'Wow,you must be very skilled'
  10:  Wow,you must be very skilled
  11:  [root@centos6 shell]# sh set-x.sh
  12:  + echo -n 'Can you write device drivers?'
  13:  Can you write device drivers?+ read answer
  14:  n
  15:  ++ echo n
  16:  ++ tr '[a-z]' '[A-Z]'
  17:  + answer=N
  18:  + '[' N = Y ']'
  19:  + echo 'Neither can I,I am just an example shell script'
  20:  Neither can I,I am just an example shell script
  21:  [root@centos6 shell]#

 
 
   헤헤, 보 셨 죠? 줄 마다 표시 되 어 있 습 니 다. 매개 변수의 상태 와 어느 단계 까지 실행 되 는 값 이 얼마 인지 잘 보 이 죠? answer 라 는 변수의 모든 단계 의 상태 와 값 을 잘 볼 수 있 습 니 다. 관심 이 있다 면 시험 해 보 세 요. 이 옵션 은

좋은 웹페이지 즐겨찾기