Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

Linux에서 셸 스크립트 디버깅 모드를 활성화하는 방법

스크립트는 단순히 파일에 저장된 명령 목록입니다. 터미널에서 항상 명령을 하나씩 입력하여 일련의 명령을 실행하는 대신 시스템 사용자는 모든 명령(명령)을 파일에 저장하고 파일을 반복적으로 호출하여 명령을 여러 번 다시 실행할 수 있습니다.

스크립팅을 배우는 동안 또는 스크립트 작성의 초기 단계에서 우리는 일반적으로 몇 줄의 명령으로 작거나 짧은 스크립트를 작성하는 것으로 시작합니다. 그리고 우리는 일반적으로 출력을 보고 의도한 대로 작동하는지 확인하는 것 외에는 아무것도 하지 않고 이러한 스크립트를 디버그합니다.

그러나 시스템 설정을 수정하고 네트워크를 통해 중요한 백업을 수행하는 스크립트와 같이 수천 줄의 명령으로 매우 길고 고급 스크립트를 작성하기 시작하면 스크립트의 출력만 보는 것이 중요하지 않다는 것을 깨닫게 될 것입니다. 스크립트 내에서 버그를 찾기에 충분합니다.

따라서 이 Linux 시리즈의 셸 스크립트 디버깅에서는 셸 스크립트 디버깅을 활성화하는 방법을 살펴보고 다른 셸 스크립트 디버깅 모드를 설명하고 후속 시리즈에서 사용하는 방법을 설명합니다.

스크립트를 시작하는 방법

스크립트는 #!를 포함하는 첫 번째 줄로 다른 파일과 구별됩니다. (쉬뱅 – 파일 형식) 및 파일이 지정된 프로그램(인터프리터)에 의해 해석될 명령 모음임을 시스템에 알리는 경로 이름(인터프리터에 대한 경로)을 정의합니다.

다음은 다양한 유형의 스크립트에서 "첫 번째 줄"의 예입니다.

#!/bin/sh          [For sh scripting]
#!/bin/bash        [For bash scripting] 
#!/usr/bin/perl    [For perl programming]
#!/bin/awk -f      [For awk scripting]   

참고 :첫 번째 줄 또는 #! 스크립트에 내부 쉘 지시문 없이 표준 시스템 명령 세트만 포함된 경우 생략할 수 있습니다.

Linux에서 쉘 스크립트를 실행하는 방법

쉘 스크립트를 호출하는 일반적인 구문은 다음과 같습니다.

$ script_name  argument1 ... argumentN

또 다른 가능한 형식은 아래와 같이 스크립트를 실행할 쉘을 명확하게 지정하는 것입니다.

$ shell script_name argument1 ... argumentN  

예:

$ /bin/bash script_name argument1 ... argumentN     [For bash scripting]
$ /bin/ksh script_name argument1 ... argumentN      [For ksh scripting]
$ /bin/sh script_name argument1 ... argumentN       [For sh scripting]

#!가 없는 스크립트의 경우 첫 번째 줄에 다음과 같은 기본 시스템 명령만 포함합니다.

#script containing standard system commands
cd /home/$USER
mkdir tmp
echo "tmp directory created under /home/$USER"

간단히 실행 가능하게 만들고 다음과 같이 실행하십시오:

$ chmod +x  script_name
$ ./script_name 

쉘 스크립트 디버깅 모드 활성화 방법

다음은 기본 셸 스크립트 디버깅 옵션입니다.

  1. -v (verbose의 줄임말) – 스크립트를 읽는 동안 스크립트의 모든 행을 표시하도록 쉘에 지시하고 verbose 모드를 활성화합니다.
  2. -n (noexec 또는 no ecxecution의 줄임말) – 쉘이 모든 명령을 읽도록 지시하지만 실행하지는 않습니다. 이 옵션은 구문 검사 모드를 활성화합니다.
  3. -x (xtrace 또는 실행 추적의 약자) – 실행되는 동안 모든 명령과 해당 인수를 터미널에 표시하도록 셸에 지시합니다. 이 옵션은 쉘 추적 모드를 활성화합니다.

1. 쉘 스크립트의 첫 번째 줄 수정

첫 번째 메커니즘은 쉘 스크립트의 첫 번째 줄을 아래와 같이 변경하는 것입니다. 이렇게 하면 전체 스크립트를 디버깅할 수 있습니다.

#!/bin/sh option(s)

위의 형식에서 옵션은 위의 디버깅 옵션 중 하나 또는 조합일 수 있습니다.

2. 디버깅 옵션으로 셸 호출

두 번째는 다음과 같이 디버깅 옵션을 사용하여 셸을 호출하는 것입니다. 이 방법은 전체 스크립트의 디버깅도 켭니다.

$ shell option(s) script_name argument1 ... argumentN

예:

$ /bin/bash option(s) script_name argument1 ... argumentN   

3. set Shell 내장 명령 사용

세 번째 방법은 set 내장 명령을 사용하여 함수와 같은 쉘 스크립트의 주어진 섹션을 디버그하는 것입니다. 이 메커니즘은 쉘 스크립트의 모든 부분에서 디버깅을 활성화할 수 있게 해주기 때문에 중요합니다.

set을 사용하여 디버깅 모드를 켤 수 있습니다. 옵션은 디버깅 옵션 중 하나입니다.

$ set option 

디버깅 모드를 활성화하려면 다음을 사용하십시오.

$ set -option

디버깅 모드를 비활성화하려면 다음을 사용하십시오.

$ set +option

또한 셸 스크립트의 다른 세그먼트에서 여러 디버깅 모드를 활성화한 경우 다음과 같이 모든 디버깅 모드를 한 번에 비활성화할 수 있습니다.

$ set -

지금은 쉘 스크립트 디버깅 모드를 활성화하는 것이 전부입니다. 보았듯이 전체 셸 스크립트 또는 스크립트의 특정 섹션을 디버그할 수 있습니다.

이 시리즈의 다음 두 에피소드에서는 쉘 스크립트 디버깅 옵션을 사용하여 장황하게 설명하는 방법을 다룰 것입니다. , 구문 검사쉘 추적 디버깅 예제가 있는 모드.

중요한 것은 이 가이드에 대해 질문하거나 아래의 의견 섹션을 통해 피드백을 제공하는 것을 잊지 마십시오. 그때까지 Tecmint와 연결 상태를 유지하세요.