Bash 스크립트를 위한 나의 코딩 규칙

발행: (2026년 1월 19일 오후 07:39 GMT+9)
5 min read
원문: Dev.to

Source: Dev.to

Cover image for My Coding Rules for Bash Scripts

이 컬렉션에는 이제 매개변수가 있거나 없는 간단하고 복잡한 함수들의 예제가 포함되어 있어 Bash 스크립트 코딩에 대한 포괄적인 참고 자료를 제공합니다. 기본부터 시작하여 덜 사용되는 솔루션까지 진행됩니다.

1. Shebang

각 스크립트의 첫 줄에 shebang 라인을 추가하여 사용할 인터프리터를 지정합니다:

#!/bin/bash

2. 권한

스크립트에 실행 권한이 있는지 확인하십시오:

chmod +x script_name.sh

3. 주석

코드를 설명하기 위해 주석을 사용하세요:

# This is a comment

4. 변수

변수 선언

등호 주변에 공백 없이 변수를 선언하십시오:

name="value"

기본값 – 변수가 정의되지 않은 경우 기본값을 설정하려면 ${variable:-default_value}를 사용하십시오:

name=${name:-"default_value"}

변수 처리

대문자 변환

uppercase=${name^^}

소문자 변환

lowercase=${name,,}

첫 글자 대문자 (Capitalization)

capitalize=${name^}

인라인 문자 교체 – 문자열의 모든 발생을 교체합니다:

new_name=${name//old/new_value}

5. 입력 매개변수

Bash 스크립트는 입력 매개변수를 받을 수 있으며, 이를 다양한 방식으로 처리할 수 있습니다:

SymbolDescription
$1, $2, …위치 매개변수 ($1은 첫 번째 인수, $2는 두 번째 인수 등)
$#전달된 매개변수 개수
$@모든 매개변수를 리스트 형태로 (루프에서 유용)
$*모든 매개변수를 하나의 문자열로
$?마지막 실행된 명령의 반환 코드

예시

# $1, $2, …
echo "First parameter: $1"

# $#
echo "Number of parameters: $#"

# $@
for param in "$@"; do
    echo "Parameter: $param"
done

# $*
echo "All parameters: $*"

# $?
echo "Return code: $?"

6. 조건

조건 구조에는 if … then … else … fi를 사용합니다:

if [ condition ]; then
    # commands
else
    # other commands
fi

7. case (Switch‑Case) 구조

case를 사용하면 여러 조건을 보다 가독성 있게 처리할 수 있습니다. 가능한 값들을 공백으로 구분합니다:

case $variable in
    value1 | value2 | value3)
        # commands for value1, value2, or value3
        ;;
    value4)
        # commands for value4
        ;;
    *)
        # default commands
        ;;
esac

8. 함수

매개변수 없는 간단한 함수

my_simple_function() {
    echo "This is a simple function."
}

# Call the function
my_simple_function

매개변수가 있는 함수

my_function_with_parameters() {
    param1=$1
    param2=$2
    echo "Parameter 1: $param1"
    echo "Parameter 2: $param2"
}

# Call the function with parameters
my_function_with_parameters "value1" "value2"

복합 함수 (처리 및 다중 매개변수)

my_complex_function() {
    name=$1
    age=$2

    if [ "$age" -lt 18 ]; then
        echo "$name is a minor."
    else
        echo "$name is an adult."
    fi
}

# Call the complex function
my_complex_function "Alice" 20
my_complex_function "Bob" 15

9. 변수 테스트

테스트용 비교 연산자

문자열 비교

Operator의미
==동일
!=다름
>사전식으로 더 큼
if [ "$string1" == "$string2" ]; then
    echo "The strings are identical"
fi

숫자 비교

Operator의미
-eq동일
-ne다름
-lt작음
-gt
-le작거나 같음
-ge크거나 같음
if [ "$number1" -lt "$number2" ]; then
    echo "$number1 is less than $number2"
fi

10. 루프

반복하기 위해 for, while, 또는 until 루프를 사용하세요:

for i in {1..5}; do
    echo "$i"
done

11. 오류 처리

오류를 $? 로 확인하고 set -e 를 사용하여 오류가 발생하면 스크립트를 중단합니다:

set -e

12. set 사용하기

정의되지 않은 변수를 오류로 처리하려면 set -u를 사용합니다:

set -u

13. 출력

echo를 사용하여 메시지나 결과를 표시합니다:

echo "Message"

14. trap 사용

시그널을 처리하고 종료하기 전에 정리 작업을 수행합니다:

trap 'cleanup_command' EXIT

15. Best Practices

  • 모호한 변수 이름을 피하십시오.
  • 설명적인 파일 이름을 사용하십시오.
  • 스크립트를 프로덕션에서 실행하기 전에 안전한 환경에서 테스트하십시오.
Back to Blog

관련 글

더 보기 »

리눅스 튜토리얼: 로그를 CSV에서 JSON으로

개요 이 튜토리얼은 원시 애플리케이션 로그를 구조화된 JSON 데이터로 변환하는 과정을 단계별로 안내합니다. 이 워크플로는 테스트 데이터를 생성하는 데 유용합니다.