Linux Bash shell script

Linux Bash Shell Script 함수 정의와 호출

임베디드 친구 2025. 1. 25. 11:03
반응형

Bash 스크립트에서 함수는 코드의 재사용성을 높이고, 가독성을 개선하며, 유지보수를 용이하게 만드는 데 중요한 역할을 합니다. 이번 포스팅에서는 Bash 스크립트에서 함수의 정의와 호출 방법, 그리고 유용한 사용 사례를 살펴보겠습니다.


1. 함수란?

함수는 특정 작업을 수행하는 명령어 블록입니다. 스크립트 내에서 동일한 코드를 반복적으로 작성할 필요 없이, 함수를 호출하여 해당 작업을 수행할 수 있습니다. 이를 통해 코드가 간결해지고 효율적으로 관리됩니다.


2. 함수 정의 방법

Bash에서 함수는 다음 두 가지 방식으로 정의할 수 있습니다:

2.1 기본 함수 정의

function 함수명() {
    # 명령어 블록
}

2.2 간단한 함수 정의

함수명() {
    # 명령어 블록
}

참고: 두 가지 방법 모두 동일하게 동작하며, 개인의 스타일에 따라 선택하면 됩니다.


3. 함수 호출 방법

함수를 호출하려면 단순히 함수명을 작성하면 됩니다:

함수명

필요한 경우 인수를 전달할 수도 있습니다:

함수명 인수1 인수2

4. 함수의 예제

4.1 기본 함수 사용

아래는 간단한 메시지를 출력하는 함수 예제입니다:

#!/bin/bash

# 함수 정의
say_hello() {
    echo "안녕하세요, 소프트웨어 공장에 오신 것을 환영합니다!"
}

# 함수 호출
say_hello

출력 결과:

안녕하세요, 소프트웨어 공장에 오신 것을 환영합니다!

4.2 인수 전달

함수에 인수를 전달하여 동적으로 동작하게 만들 수 있습니다:

#!/bin/bash

# 함수 정의
greet_user() {
    echo "안녕하세요, $1님! 오늘 기분은 어떠신가요?"
}

# 함수 호출
greet_user "김철수"

출력 결과:

안녕하세요, 김철수님! 오늘 기분은 어떠신가요?

여기서 $1은 함수에 전달된 첫 번째 인수를 의미합니다.


5. 함수에서 반환 값 사용

Bash 함수는 return 키워드를 사용하여 종료 상태 코드를 반환할 수 있습니다. 일반적으로 0은 성공, 그 외의 값은 실패를 나타냅니다.

5.1 반환 값 예제

#!/bin/bash

# 함수 정의
check_even() {
    local number=$1
    if (( number % 2 == 0 )); then
        return 0  # 짝수
    else
        return 1  # 홀수
    fi
}

# 함수 호출
number=4
check_even $number
if [[ $? -eq 0 ]]; then
    echo "$number는 짝수입니다."
else
    echo "$number는 홀수입니다."
fi

출력 결과:

4는 짝수입니다.

여기서 $?는 마지막 명령어(또는 함수)의 종료 상태 코드를 나타냅니다.


6. 로컬 변수와 전역 변수

Bash 함수에서 변수는 기본적으로 전역 변수로 선언됩니다. 따라서 함수 내에서 변수 값을 변경하면 스크립트의 다른 부분에도 영향을 줄 수 있습니다.

6.1 전역 변수 예제

#!/bin/bash

# 전역 변수 정의
message="안녕하세요"

# 함수 정의
change_message() {
    message="환영합니다!"
}

# 함수 호출 전
echo "$message"

# 함수 호출
change_message

# 함수 호출 후
echo "$message"

출력 결과:

안녕하세요
환영합니다!

6.2 로컬 변수 사용

로컬 변수를 사용하여 함수 내부에서만 영향을 미치도록 설정할 수 있습니다:

#!/bin/bash

# 함수 정의
set_local_variable() {
    local message="로컬 변수입니다."
    echo "$message"
}

# 함수 호출
set_local_variable

# 전역 변수 확인 (없음)
echo "$message"  # 출력 결과 없음

출력 결과:

로컬 변수입니다.

7. 유용한 함수 예제

7.1 파일 존재 여부 확인 함수

#!/bin/bash

# 함수 정의
check_file_exists() {
    local file=$1
    if [[ -e $file ]]; then
        echo "$file 파일이 존재합니다."
    else
        echo "$file 파일이 존재하지 않습니다."
    fi
}

# 함수 호출
check_file_exists "/etc/passwd"
check_file_exists "/nonexistent/file"

출력 결과:

/etc/passwd 파일이 존재합니다.
/nonexistent/file 파일이 존재하지 않습니다.

8. 결론

이번 포스팅에서는 Bash 스크립트에서 함수 정의와 호출 방법, 인수 전달 및 반환 값 사용법을 알아보았습니다. 함수를 활용하면 스크립트의 효율성과 가독성을 크게 향상시킬 수 있습니다. 다양한 함수 활용 방법을 시도하여 자신의 스크립트 작성 능력을 향상시켜 보세요!

반응형