Linux Bash shell script

Bash Shell Script 코드 스타일과 읽기 좋은 스크립트 작성법

임베디드 친구 2025. 2. 15. 11:31
728x90
반응형

Bash 스크립트는 강력하면서도 단순한 작업을 자동화할 수 있는 유용한 도구입니다. 그러나 잘못 작성된 스크립트는 이해하기 어렵고 유지보수도 어렵습니다. 오늘은 Linux Bash Shell Script의 코드 스타일과 읽기 좋은 스크립트 작성법에 대해 알아보겠습니다.


1. 명확하고 일관된 변수 이름 사용하기

변수 이름은 스크립트의 가독성과 유지보수성을 높이는 중요한 요소입니다.

좋은 예:

#!/bin/bash

# 사용자의 이름을 저장
USER_NAME="John Doe"
# 파일 경로를 저장
FILE_PATH="/path/to/file.txt"

나쁜 예:

#!/bin/bash

# 의미가 불명확한 변수
u="John Doe"
f="/path/to/file.txt"

팁:

  • 변수 이름은 의미를 명확히 드러내야 합니다.
  • Snake_case 또는 UPPER_CASE로 작성하여 일관성을 유지하세요.

2. 주석으로 의도를 명확히 하기

주석은 코드의 의도를 명확히 설명하는 데 필수적입니다.

좋은 예:

#!/bin/bash

# 로그 파일 경로
LOG_FILE="/var/log/my_script.log"

# 로그 파일이 존재하지 않으면 생성
if [ ! -f "$LOG_FILE" ]; then
    touch "$LOG_FILE"
    echo "Log file created." >> "$LOG_FILE"
fi

나쁜 예:

#!/bin/bash

LOG_FILE="/var/log/my_script.log"

if [ ! -f "$LOG_FILE" ]; then
    touch "$LOG_FILE"
    echo "Created" >> "$LOG_FILE"
fi

팁:

  • 주요 로직 앞에는 간단한 설명을 추가하세요.
  • 복잡한 명령어에는 주석으로 사용 의도를 설명하세요.

3. 코드 블록 들여쓰기

들여쓰기는 코드의 구조를 명확히 하고 가독성을 높이는 데 필수적입니다.

좋은 예:

#!/bin/bash

for FILE in /path/to/files/*; do
    if [ -f "$FILE" ]; then
        echo "Processing $FILE"
        # 파일 처리 로직
    fi
done

나쁜 예:

#!/bin/bash

for FILE in /path/to/files/*; do
if [ -f "$FILE" ]; then
    echo "Processing $FILE"
# 파일 처리 로직
fi
done

팁:

  • 코드 블록은 4칸 들여쓰기를 사용하세요.
  • 조건문과 반복문 안의 명령어를 항상 들여쓰세요.

4. 함수로 코드 재사용성 높이기

복잡한 스크립트는 함수를 사용하여 코드를 모듈화하고 재사용성을 높여야 합니다.

좋은 예:

#!/bin/bash

# 로그 메시지를 출력하는 함수
echo_log() {
    local MESSAGE="$1"
    echo "[INFO]: $MESSAGE"
}

# 메인 로직
main() {
    echo_log "Starting the script"
    # 다른 작업 수행
    echo_log "Script finished"
}

main

나쁜 예:

#!/bin/bash

# 중복된 코드
echo "[INFO]: Starting the script"
# 다른 작업 수행
echo "[INFO]: Script finished"

팁:

  • 함수 이름은 동작을 명확히 나타내야 합니다.
  • 필요한 경우 매개변수를 사용하여 유연성을 확보하세요.

5. 에러 처리와 입력 유효성 검사

에러 처리를 통해 스크립트가 예기치 못한 상황에서도 안정적으로 동작하도록 만들어야 합니다.

좋은 예:

#!/bin/bash

# 입력 파일 확인
if [ $# -lt 1 ]; then
    echo "Usage: $0 <input_file>"
    exit 1
fi

INPUT_FILE="$1"

if [ ! -f "$INPUT_FILE" ]; then
    echo "Error: File '$INPUT_FILE' does not exist."
    exit 1
fi

echo "Processing $INPUT_FILE..."

나쁜 예:

#!/bin/bash

INPUT_FILE="$1"

# 입력 유효성 검사를 하지 않음
echo "Processing $INPUT_FILE..."

팁:

  • 사용자의 입력을 항상 검증하세요.
  • set -etrap을 사용하여 에러 발생 시 적절히 처리하세요.

6. 스크립트 헤더 추가

스크립트 상단에 작성 정보를 포함하면 유지보수에 유용합니다.

예:

#!/bin/bash
# Script Name: my_script.sh
# Description: 이 스크립트는 파일을 처리합니다.
# Author: Your Name
# Date: YYYY-MM-DD
# Version: 1.0

7. 유용한 도구와 명령어 활용

  • shellcheck: 스크립트의 문법 오류와 스타일 문제를 점검합니다.
  • set -e: 에러 발생 시 스크립트 실행을 중단합니다.
  • trap: 종료 또는 인터럽트 시 리소스를 정리하는 데 유용합니다.

예:

#!/bin/bash

# 에러 발생 시 스크립트 종료
set -e

# 종료 시 실행되는 함수
cleanup() {
    echo "Cleaning up..."
    # 리소스 정리 로직
}

trap cleanup EXIT

# 메인 작업
main() {
    echo "Running main task..."
    # 작업 수행
}

main

결론

좋은 Bash 스크립트는 명확하고 일관된 스타일, 적절한 주석, 함수 활용, 그리고 철저한 에러 처리를 통해 작성됩니다. 위에서 소개한 방법들을 활용하여 더욱 효율적이고 읽기 쉬운 스크립트를 작성해보세요!

반응형