웹사이트 검색

Linux에서 효과적인 Bash 스크립트를 작성하기 위한 10가지 유용한 팁


쉘 스크립팅은 Linux에서 배우고 수행할 수 있는 가장 쉬운 프로그래밍 형태입니다. 더욱이, 작업 자동화, 몇 가지만 언급하자면 새로운 간단한 유틸리티/도구 개발을 위한 시스템 관리에 필요한 기술입니다.

이 기사에서는 효과적이고 안정적인 bash 스크립트를 작성하기 위한 10가지 유용하고 실용적인 팁을 공유할 것입니다. 여기에는 다음이 포함됩니다.

1. 스크립트에는 항상 주석을 사용하세요

이는 쉘 스크립팅뿐만 아니라 다른 모든 종류의 프로그래밍에 적용되는 권장 방법입니다. 스크립트에 주석을 작성하면 귀하 또는 스크립트를 검토하는 다른 사람이 스크립트의 다른 부분이 수행하는 작업을 이해하는 데 도움이 됩니다.

우선 주석은 # 기호를 사용하여 정의됩니다.

#TecMint is the best site for all kind of Linux articles

2. 실패 시 스크립트 종료 만들기

때때로 bash는 특정 명령이 실패하더라도 스크립트를 계속 실행하여 나머지 스크립트에 영향을 미칠 수 있습니다(결국 논리적 오류가 발생할 수 있음). 명령이 실패할 때 스크립트를 종료하려면 아래 줄을 사용하십시오.

#let script exit if a command fails
set -o errexit 
OR
set -e

3. Bash가 선언되지 않은 변수를 사용할 때 스크립트 종료 만들기

Bash는 논리적 오류를 일으킬 수 있는 선언되지 않은 스크립트를 사용하려고 시도할 수도 있습니다. 따라서 선언되지 않은 변수를 사용하려고 할 때 스크립트를 종료하도록 bash에 지시하려면 다음 행을 사용하십시오.

#let script exit if an unsed variable is used
set -o nounset
OR
set -u

4. 변수를 참조하려면 큰따옴표를 사용하세요.

참조하는 동안(변수 값 사용) 큰따옴표를 사용하면 단어 분할(공백 관련)과 불필요한 글로빙(와일드카드 인식 및 확장)을 방지하는 데 도움이 됩니다.

아래 예를 확인하세요.

#!/bin/bash
#let script exit if a command fails
set -o errexit 

#let script exit if an unsed variable is used
set -o nounset

echo "Names without double quotes" 
echo
names="Tecmint FOSSMint Linusay"
for name in $names; do
        echo "$name"
done
echo

echo "Names with double quotes" 
echo
for name in "$names"; do
        echo "$name"
done

exit 0

파일을 저장하고 종료한 후 다음과 같이 실행합니다.

./names.sh

5. 스크립트에서 함수 사용하기

매우 작은 스크립트(몇 줄의 코드 포함)를 제외하고 항상 함수를 사용하여 코드를 모듈화하고 스크립트를 더 읽기 쉽고 재사용 가능하게 만드는 것을 기억하세요.

함수 작성 구문은 다음과 같습니다.

function check_root(){
	command1; 
	command2;
}

OR
check_root(){
	command1; 
	command2;
}

한 줄 코드의 경우 다음과 같이 각 명령 뒤에 종료 문자를 사용합니다.

check_root(){ command1; command2; }

6. 문자열 비교에는 == 대신 =를 사용하세요.

===의 동의어이므로 문자열 비교에는 단일 =만 사용하십시오. 예를 들면 다음과 같습니다.

value1=”linux-console.net”
value2=”fossmint.com”
if [ "$value1" = "$value2" ]

7. 대체를 위해 레거시 '명령어' 대신 $(명령)을 사용합니다.

명령 대체는 명령을 해당 출력으로 대체합니다. 명령 대체를 위해 역따옴표 `command` 대신 $(명령)을 사용하세요.

이는 shellcheck 도구에서도 권장됩니다(셸 스크립트에 대한 경고 및 제안 표시). 예를 들어:

user=`echo “$UID”`
user=$(echo “$UID”)

8. 읽기 전용을 사용하여 정적 변수 선언

정적 변수는 변경되지 않습니다. 해당 값은 스크립트에 정의된 후에는 변경할 수 없습니다.

readonly passwd_file=”/etc/passwd”
readonly group_file=”/etc/group”

9. ENVIRONMENT 변수에는 대문자 이름을 사용하고 사용자 정의 변수에는 소문자를 사용하십시오.

모든 bash 환경 변수의 이름은 대문자로 지정되므로 변수 이름 충돌을 방지하려면 소문자를 사용하여 사용자 지정 변수 이름을 지정하세요.

#define custom variables using lowercase and use uppercase for env variables
nikto_file=”$HOME/Downloads/nikto-master/program/nikto.pl”
perl “$nikto_file” -h  “$1”

10. 긴 스크립트에 대해서는 항상 디버깅을 수행하세요

수천 줄의 코드로 bash 스크립트를 작성하는 경우 오류를 찾는 것이 악몽이 될 수 있습니다. 스크립트를 실행하기 전에 문제를 쉽게 해결하려면 몇 가지 디버깅을 수행하세요. 아래 제공된 가이드를 읽고 이 팁을 익히십시오.

  1. Linux에서 쉘 스크립트 디버깅 모드를 활성화하는 방법
  2. 쉘 스크립트에서 구문 검사 디버깅 모드를 수행하는 방법
  3. 셸 추적을 사용하여 셸 스크립트에서 명령 실행을 추적하는 방법

그게 다야! 공유할 수 있는 다른 최고의 bash 스크립팅 방법이 있습니까? 그렇다면 아래의 의견 양식을 사용하여 그렇게 하십시오.