50% 할인 모든 계획, 제한된 시간. 시작 시간 $2.48/mo
11분 남음
서버 및 OS

Bash 함수 설명: 구문, 예제 및 사용 사례

켈리 왓슨 By 켈리 왓슨 11분 읽기 2025년 12월 14일 업데이트됨
Bash 기능을 나타내는 모듈식 구조로 조립되는 빛나는 파란색 코드 블록의 추상 3D 그림

Bash 함수는 관련 명령을 단일 이름으로 그룹화합니다. 해당 이름을 호출하면 전체 블록이 실행됩니다. 인수를 전달하여 동작을 사용자 정의하고 값을 반환하여 결과를 전달할 수 있습니다. 이렇게 하면 코드가 깔끔하게 유지되고 유지 관리가 쉬워집니다.

Linux는 전 세계적으로 서버 환경을 지배하므로 Bash 기능을 익히는 것이 그 어느 때보다 중요합니다. 함수는 지저분한 스크립트를 깨끗하고 재사용 가능한 자동화로 바꿔줍니다.

이 가이드에서는 기본 구문부터 고급 사용 사례까지 안내합니다. 함수 선언, 매개변수 전달, 반환 값 처리 방법을 배우고 자신의 스크립트에서 사용할 수 있는 10가지 실제 예제를 살펴봅니다.

TL;DR

  • Bash 함수는 스크립트 전체에서 재사용할 수 있는 명명된 코드 블록입니다.
  • 다음을 사용하여 함수를 정의합니다. function_name() { 명령; } 통사론
  • 다음을 사용하여 인수 전달 $1, $2, $3 위치 매개변수
  • 기능은 코드 가독성, 모듈성 및 유지 관리를 향상시킵니다.
  • 사용 반품 기능을 종료하고 상태 코드를 전달합니다(0 = 성공, 0이 아닌 = 실패).
  • 함수는 다음을 사용하여 스크립트 간에 공유될 수 있습니다. 원천 or 내보내기 -f
  • 실제 예로는 파일 백업, 디스크 모니터링, 입력 유효성 검사, 서비스 확인 등이 있습니다.

Bash 스크립팅이란 무엇입니까?

빛나는 Bash 코드가 자체적으로 작성되는 디지털 스크롤의 3D 일러스트레이션으로 Bash 스크립팅 자동화를 나타냅니다.

Bash 스크립팅은 Bash 셸을 사용하는 작업 자동화 방법입니다. 이는 Linux의 기본 명령줄 인터페이스 역할을 하며 macOS에서는 표준 도구로 남아 있습니다. Bash 스크립트는 Bash 스크립트 언어로 코딩된 프로그램으로, 터미널에서 실행되거나 독립 실행형 스크립트 파일로 실행될 수 있습니다.

와 함께 Linux 데스크톱 사용량이 꾸준히 증가하고 있습니다. 그리고 전세계 서버 환경을 지배하는 운영 체제 덕분에 Bash 스크립팅 기술은 IT 전문가에게 귀중한 것이 되었습니다. 이 언어는 Docker, Kubernetes, CI/CD 파이프라인과 같은 DevOps 도구와 잘 통합됩니다.

Bash 스크립팅을 사용하면 간단한 명령부터 복잡한 자동화 및 시스템 관리까지 작업을 수행할 수 있습니다. 반복적인 작업을 자동화하고, 유지 관리 스크립트를 개발하고, 배포 파이프라인을 구성하고, 소프트웨어 시스템을 관리하고, 데이터를 조작할 수 있습니다.

배쉬 기능이란 무엇입니까?

Bash 기능의 작동 방식을 상징하며 왼쪽에 빈 공간이 있는 빛나는 처리 게이트로 구성되는 지저분한 명령줄 데이터를 보여주는 미래형 디지털 그림입니다.

Bash 기능은 사용 사례에 따라 Bash 스크립트 내에 정의되거나 명령 프롬프트에서 대화형으로 설정되는 명령 집합으로 정의될 수 있습니다. 일단 정의되면 Bash 함수는 일반 쉘 명령처럼 스크립트 내에서 또는 다른 스크립트에서 여러 번 호출될 수 있습니다.

Bash 함수를 사용하면 복잡한 작업을 수행하고, 코드를 구성하고, 스크립트를 단순화할 수 있는 재사용 가능한 코드 블록을 만들 수 있습니다. Bash 함수에 인수를 전달한 다음 함수 내에서 이를 사용하여 작업을 수행할 수 있습니다. Bash 함수는 스크립트의 다른 곳에서 사용할 수 있는 값을 반환합니다.

e는 다음을 포함하여 몇 가지 특정 구현 스타일을 다룰 것입니다. simple_function 기본 논리의 경우, simple_inputs 인수 처리 및 다음과 같은 고급 구조 fibonnaci_recursion.

Bash 함수 기본 사항 자동화 작업을 수행하는 모든 시스템 관리자나 DevOps 엔지니어에게 중요합니다. 다음 섹션에서는 이러한 각 유형을 자세히 다룹니다.

Bash 함수를 사용하는 이유는 무엇입니까?

코드 머신을 구동하는 최적화 기호가 있는 빛나는 파란색 기어는 Bash 기능을 사용하여 얻은 효율성과 속도를 나타냅니다.

이제 Bash 함수의 정의를 다루었으니 주요 장점을 검토해 보겠습니다. 이 섹션은 함수가 가장 유용한 위치를 이해하는 데 도움이 됩니다.

재사용성

Bash 함수를 생성하면 강력한 도구가 됩니다. 코드 블록을 한 번 작성하면 스크립트 내에서 또는 다른 스크립트에서도 여러 번 재사용할 수 있습니다.

이렇게 하면 중복을 제거하여 코드를 더욱 효율적으로 만들고 시간을 절약할 수 있습니다. 한 곳에서 함수를 변경하기만 하면 되므로 코드 유지 관리가 더 간단해집니다.

가독성

복잡한 스크립트는 해독하기 어려울 수 있습니다. Bash 기능은 스크립트를 더 작고 관리하기 쉬운 부분으로 나누어 이 문제를 해결합니다.

각 기능은 해당 역할을 설명하는 설명적인 이름으로 특정 목적을 수행합니다. 이는 귀하와 다른 사람들이 코드를 더 쉽게 이해하고 유지하는 데 도움이 됩니다.

모듈성

함수는 코드를 구성합니다. 로직을 더 작은 모듈로 분할하여 스크립트 구조를 깔끔하고 관리하기 쉽게 유지할 수 있습니다.

그리고 새로운 기능을 추가해야 하는 경우 스크립트의 다른 부분을 건드리지 않고도 추가할 수 있습니다. 기능을 제거하거나 수정해야 할 때 스크립트의 나머지 부분은 그대로 유지됩니다.

Bash 함수 매개변수

인수 또는 매개변수를 함수에 전달할 수 있습니다. 이러한 인수를 사용하면 함수가 수신한 입력에 따라 다양한 작업을 조정하고 수행할 수 있습니다.

이는 기능을 더욱 다양하고 적응 가능하게 만드는 동시에 많은 가능성을 열어줍니다. 유사한 코드를 여러 번 작성하는 대신 서로 다른 입력을 처리하는 하나의 함수를 작성합니다.

Bash 기능을 사용하는 방법과 위치는 무엇입니까?

함수 블록으로 분기하고 반환되는 스크립트 실행을 보여주고 Bash 함수가 논리 흐름에서 사용되는 방식을 시각화하는 3D 유리 흐름도입니다.

이제 우리의 정의에 대해 약간 기술적으로 접근하고 Bash 함수를 생성하는 방법에 대한 간단한 예부터 시작하겠습니다. Unix 기반 환경에서는 다음 구문을 사용할 수 있습니다. Windows에서 작업하는 경우 다음을 수행할 수 있습니다. Windows 10에 Linux Bash 설치 이 예제를 따라해보세요.

Bash 함수 만들기

다음 명령 구조를 사용하여 시작하십시오.

function_name () {

    # 명령은 여기로 갑니다

}

 

함수를 생성한 후에는 언제든지 코드에서 사용할 수 있습니다. 실제 예는 다음과 같습니다.

환영하다 () {

    echo “안녕하세요, $1!”

}

 

이 함수를 다음과 같이 호출하세요. 세계를 맞이하다 "Hello, World!"를 출력합니다. 그만큼 $1 함수에 전달된 첫 번째 인수를 나타냅니다.

다음은 자신의 스크립트에서 사용할 수 있는 몇 가지 실용적인 예입니다.

# 모든 파일의 백업을 생성합니다

백업_파일() {

    cp “$1” “$1.bak”

    echo "백업 생성됨: $1.bak"

}

 

# 디렉토리가 존재하는지 확인하고 존재하지 않으면 생성

보장_디렉터리() {

    만약에 [ ! -d "$1" ]; 그 다음에

        mkdir -p "$1"

        echo "생성된 디렉터리: $1"

    fi

}

 

# 타임스탬프가 포함된 로그 메시지

log_message () {

    echo "[$(날짜 '+%Y-%m-%d %H:%M:%S')] $1"

}

 

이러한 사용자 정의 Bash 함수를 한 번 정의하고 스크립트 전체에서 필요할 때마다 호출합니다.

함수 구문 필수 사항

함수는 기본 스크립트 내의 미니 스크립트처럼 작동하지만 셸의 메모리를 공유합니다. 글을 작성할 때 다음 세 가지 구체적인 행동을 염두에 두십시오.

변수 범위(로컬 대 글로벌)

함수 내부의 변수는 기본적으로 전역 변수입니다. 정의한다면 my_var=”테스트” 함수 내부에서는 기존의 모든 항목을 재정의합니다. my_var 귀하의 스크립트에서. 항상 사용 현지의 변수를 함수에 제한하면 부작용을 방지할 수 있습니다.

로컬 my_var=”값”

위치 매개변수

함수는 동일한 것을 사용하여 인수를 읽습니다. $1, $2, 그리고 $@ 변수를 스크립트로 사용합니다. 이는 함수에 대해 로컬이며 함수가 종료되면 재설정됩니다. 스크립트의 원래 인수는 명시적으로 전달하지 않는 한 함수 내에서 액세스할 수 없습니다.

반환 값

Bash 함수는 Python 또는 JavaScript 함수와 같은 데이터를 반환하지 않습니다. 그만큼 반품 명령은 성공 또는 실패를 나타내기 위해 종료 상태(0-255)만 설정합니다. 실제 데이터(예: 문자열 또는 계산)를 반환하려면 에코 결과를 가져와서 함수를 호출할 때 캡처합니다.

결과=$(my_function)

유용한 Bash 함수 예제 10가지

이제 Bash 기능과 이를 생성하는 방법을 이해했으므로 스크립트에 추가할 수 있는 10가지 실제 예제는 다음과 같습니다. 각 함수는 일반적인 문제를 해결하고 적절한 구조, 인수 및 반환 값을 보여줍니다.

1. 파일 백업 기능

모든 파일의 타임스탬프가 지정된 백업을 생성합니다.

백업_파일() {

    로컬 파일=”$1″

    로컬 백업=”${file}.$(date +%Y%m%d_%H%M%S).bak”

    

    if [ -f “$file” ]; 그 다음에

        cp “$file” “$backup”

        echo "백업 생성됨: $backup"

        0을 반환

    또 다른

        echo "오류: 파일을 찾을 수 없습니다"

        1을 반환

    fi

}

 

용법: 백업 파일 /etc/nginx/nginx.conf

2. 디렉토리 검사기

디렉토리가 존재하는지 확인하고 필요한 경우 디렉토리를 생성합니다.

보장_디렉터리() {

    로컬 디렉토리=”$1″

    

    만약에 [ ! -d "$dir" ]; 그 다음에

        mkdir -p “$dir”

        echo "생성됨: $dir"

    fi

}

 

용법: verify_dir /var/log/myapp

3. 타임스탬프 로거

디버깅을 위해 로그 메시지에 타임스탬프를 추가합니다.

log_message () {

    지역 레벨=”$1″

    로컬 메시지=”$2″

    echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $message"

}

 

용법: log_message “INFO” “스크립트가 시작되었습니다”

4. 디스크 공간 모니터

디스크 사용량을 확인하고 임계값을 초과하면 경고합니다.

check_disk_space () {

    로컬 임계값=”${1:-80}”

    로컬 사용법=$(df / | tail -1 | awk '{print $5}' | tr -d '%')

    

    if [ “$usage” -gt “$threshold” ]; 그 다음에

        echo "경고: ${usage}%의 디스크 사용량"

        1을 반환

    fi

    0을 반환

}

 

용법: check_disk_space 90

5. 입력 유효성 검사기

사용자 입력이 비어 있지 않은지 확인합니다.

유효성 검사_입력() {

    로컬 입력=”$1″

    지역 이름=”$2″

    

    if [ -z “$input” ]; 그 다음에

        echo "오류: $name은 비워둘 수 없습니다."

        1을 반환

    fi

    0을 반환

}

 

용법: verify_input “$username” “사용자 이름”

6. 서비스 상태 확인기

서비스가 실행 중인지 확인하고 상태를 보고합니다.

check_service () {

    지역 서비스=”$1″

    

    systemctl이 활성인 경우 –quiet “$service”; 그 다음에

        echo "$service가 실행 중입니다"

        0을 반환

    또 다른

        echo "$service가 실행되고 있지 않습니다"

        1을 반환

    fi

}

 

용법: check_service nginx

7. 파일 확장자 추출기

파일 이름에서 확장자를 추출합니다.

get_extension () {

    로컬 파일 이름=”$1″

    에코 "${파일 이름##*.}"

}

 

용법: ext=$(get_extension “document.pdf”)

8. 스트링 트리머

문자열에서 선행 및 후행 공백을 제거합니다.

트림_문자열() {

    로컬 문자열=”$1″

    str=”${str#”${str%%[![:space:]]*}”}”

    str=”${str%”${str##*[![:space:]]}”}”

    에코 "$str"

}

 

용법: clean=$(trim_string “안녕하세요 세상”)

9. 안전한 파일 아카이버

파일을 영구적으로 삭제하는 대신 사용자 정의 $HOME/.trash 디렉토리로 이동합니다. 이전 백업을 덮어쓰는 것을 방지하기 위해 파일 이름에 타임스탬프를 추가합니다.

safe_remove() {

    로컬 파일=”$1″

    로컬 쓰레기=”$HOME/.trash”

    # 기존 파일을 덮어쓰지 않도록 타임스탬프를 추가합니다.

    local new_name="$(기본 이름 "$file")_$(날짜 +%s)"

    

    mkdir -p “$trash”

 

    if [ -e “$file” ]; 그 다음에

        mv “$file” “$trash/$new_name”

        echo “아카이브로 이동됨: $file -> $trash/$new_name”

    또 다른

        echo "오류: $file을 찾을 수 없습니다"

        1을 반환

    fi

}

 

용법: safe_remove old_script.sh

 

10. 현황 보고자

오류 처리를 위한 Bash 함수 반환 메커니즘을 보여줍니다. Bash 함수 반환 값은 성공(0) 또는 실패(0이 아님)를 나타냅니다.

프로세스_데이터() {

    로컬 파일=”$1″

    

    만약에 [ ! -f “$파일” ]; 그 다음에

        1을 반환

    fi

    

    # 파일 처리

    고양이 “$file” | 화장실 -l

    0을 반환

}

 

# 반환값을 확인한다

process_data "data.txt"

만약 [ $? -eq 0]; 그 다음에

    echo "처리 완료"

또 다른

    echo "처리 실패"

fi

 

그만큼 $? 변수는 마지막 명령이나 함수 호출의 종료 상태를 캡처합니다.

기능 목적 주요 특징
백업_파일 파일 백업 생성 타임스탬프 명명
보장_디렉터리 디렉토리 관리 누락된 경우 생성됩니다.
로그 메시지 벌채 반출 타임스탬프 접두사
check_disk_space 시스템 모니터링 임계값 경고
유효성 검사_입력 입력 검증 빈 문자열 검사
check_service 서비스 모니터링 시스템 통합
get_extension 문자열 분석 매개변수 확장
트림_문자열 문자열 정리 공백 제거
safe_remove 안전한 삭제 휴지통 디렉토리
프로세스_데이터 오류 처리 반환 값

VPS에서 Bash 기능 실행

Bash 기능은 전용 서버 환경에서 실행될 때 강력해집니다. 우리의 리눅스 VPS 쉘 환경을 사용자 정의하고, 시스템 전체 기능 라이브러리를 생성하고, 제한 없이 서버 관리 작업을 자동화할 수 있는 전체 루트 액세스를 제공합니다.

VPS를 사용하면 재사용 가능한 기능을 저장할 수 있습니다. /etc/profile.d/ 모든 사용자를 위해 cron 작업을 통해 기능 기반 스크립트를 예약하고 배포 및 유지 관리를 위한 자동화 파이프라인을 구축합니다. 우리는 최대 40Gbps 네트워크 속도와 DDR5 메모리를 갖춘 서버를 전 세계 12개 위치에 제공합니다. 이는 더 빠른 스크립트 실행과 더 원활한 데이터 처리를 의미합니다.

이러한 수준의 제어를 통해 VPS는 쉘 스크립팅 및 시스템 자동화에 관심이 있는 모든 사람에게 이상적입니다.

결론

Bash 기능은 모듈식이며 재사용 가능한 스크립트를 만드는 데 핵심입니다. 이를 통해 관련 명령을 그룹화하고 복잡한 논리를 캡슐화하여 코드를 더 쉽게 읽고 유지 관리할 수 있습니다. 클라우드 인프라를 관리하거나 배포 파이프라인을 자동화하거나 일상적인 시스템 관리 작업을 처리하는 경우 기능을 사용하면 스크립트를 체계적이고 효율적으로 유지하는 데 도움이 됩니다.

이 기사에서는 Bash 함수 정의 및 호출 방법, 10가지 실제 함수 예제, 자동화 프로젝트를 시작하는 데 도움이 되는 일반적인 사용 사례 등 Bash 함수의 기본 사항을 다루었습니다.

다음과 같은 제어 구조와 결합 배쉬 if 문, 기능은 강력한 자동화를 위한 구성 요소를 제공합니다. 스크립트에서 Bash 기능을 사용하면 더 쉽게 이해하고 유지 관리할 수 있는 더 깔끔하고 모듈화된 코드를 작성할 수 있습니다.

FAQ

Bash 함수에 지역 변수가 있을 수 있나요?

예. Bash 함수는 local 키워드를 사용하여 지역 변수를 가질 수 있습니다. 이는 변수의 범위를 함수로 제한하여 함수 외부의 동일한 이름을 가진 변수에 영향을 미치지 않도록 합니다.

Bash 함수는 재귀적일 수 있나요?

예, Bash 함수는 재귀적일 수 있습니다. Bash는 기본 호출 스택 크기가 상대적으로 작으므로 염두에 두고 있는 재귀 함수에 따라 실행 전에 ulimit -s 명령을 사용하여 늘려야 할 수도 있습니다.

다른 스크립트에서 Bash 기능을 사용할 수 있나요?

예, source 명령(또는 약칭 .)을 사용하여 스크립트 간에 Bash 기능을 공유할 수 있습니다. 함수 정의가 포함된 파일을 소싱하여 호출 스크립트에서 해당 함수를 사용할 수 있게 만듭니다. 하위 프로세스의 경우, 함수에 액세스할 수 있도록 하려면 내보내기 -f function_name을 사용하십시오.

파이프라인에서 Bash 기능을 사용할 수 있나요?

예, 하지만 외부 명령에는 특정 단계가 필요합니다. 스크립트 내에서 데이터를 함수(예: cat file | my_function)로 직접 파이프할 수 있습니다. 그러나 xargs 또는 find -exec와 같은 명령은 새로운 환경에서 실행됩니다. 여기서 함수를 사용하려면 함수를 내보낸 다음(export -f my_func) 명시적으로 Bash를 호출해야 합니다(예: xargs bash -c 'my_func "$@"').

쉘 스크립트 함수란 무엇입니까?

셸 스크립트 함수는 특정 목적을 제공하고 스크립트의 다양한 부분에서 호출할 수 있는 셸 스크립트 내에 정의된 코드 블록입니다. 함수는 코드 모듈성, 더 나은 재사용성, 더 쉬운 유지 관리 측면에서 큰 가치를 제공합니다. Bash 스크립팅의 맥락에서 함수는 전체 스크립트 내에 캡슐화됩니다.

공유하다

블로그에서 더 보기

계속 읽어보세요.

Cosmos Cloud로 실행할 수 있는 최고의 자체 호스팅 앱 Cosmos 대시보드 주변에 앱 패널이 있는 표지 이미지입니다.
서버 및 OS

Cosmos Cloud로 실행할 수 있는 최고의 셀프 호스팅 앱: 파일, 미디어, 비밀번호, 자동화 등!

어쩌면 Cosmos Cloud를 설정했는데 이제 어떤 앱이 이에 잘 어울리는지 확인하고 싶을 수도 있고, 아직 Cosmos를 결정하지도 않았는데 업무 환경에 얼마나 잘 맞는지 확인하고 싶을 수도 있습니다.

닉 실버닉 실버 16분 읽기
Docker 앱 관리를 위한 Portainer 및 Cosmos Cloud는 하이브리드 설정 다이어그램과 네온 옵스 및 액세스 블록을 다룹니다.
서버 및 OS

Portainer vs Cosmos Cloud: Docker 앱 관리에 가장 적합

이미 Docker를 알고 있고 점점 늘어나는 앱 스택을 더 깔끔하게 실행하는 방법을 원한다면 Portainer와 Cosmos Cloud에 대한 짧은 답변을 참조하세요. Portainer는 다이렉트에 대한 더 강력한 선택입니다.

닉 실버닉 실버 14분 읽기
하나의 추상 클라우드 네트워크 세계 내에서 세 가지 자체 호스팅 경로를 보여주는 Cosmos Cloud, CasaOS, Umbrel 기능 그래픽입니다.
서버 및 OS

Cosmos Cloud vs CasaOS vs Umbrel: 귀하의 설정에 적합한 자체 호스팅 플랫폼은 무엇입니까?

짧은 대답은 CasaOS가 여전히 시작하기 가장 쉬운 곳이고, Umbrel이 가장 깔끔하게 선별된 느낌을 갖고 있으며, 도메인에 대한 더 엄격한 제어를 원할 경우 Cosmos Cloud가 더 적합하다는 것입니다.

닉 실버닉 실버 11분 읽기

배포할 준비가 되셨나요? 월 $2.48부터

2008년부터 독립 클라우드. AMD EPYC, NVMe, 40Gbps. 14일 환불.