웹사이트 검색

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


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

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

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

따라서 이 Linux 시리즈의 셸 스크립트 디버깅에서는 셸 스크립트 디버깅을 활성화하는 방법을 살펴보고, 다음 시리즈에서 다양한 셸 스크립트 디버깅 모드와 이를 사용하는 방법을 설명하겠습니다.

스크립트를 시작하는 방법

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

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

#!/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. -n (noexec 또는 no ecxecution의 약어) – 셸이 모든 명령을 읽도록 지시하지만 실행하지는 않습니다. 이 옵션은 구문 검사 모드를 활성화합니다.
  2. -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 쉘 내장 명령 사용

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

아래 형식의 set 명령을 사용하여 디버깅 모드를 켤 수 있습니다. 여기서 option은 디버깅 옵션 중 하나입니다.

set option 

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

set -option

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

set +option

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

set -

지금은 쉘 스크립트 디버깅 모드를 활성화하는 것이 전부입니다. 우리가 본 것처럼 전체 쉘 스크립트를 디버그하거나 스크립트의 특정 섹션을 디버그할 수 있습니다.

이 시리즈의 다음 두 에피소드에서는 쉘 스크립트 디버깅 옵션을 사용하여 자세한 설명, 구문 검사쉘 추적 디버깅을 설명합니다. > 예시가 포함된 모드.

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