Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

Bash에서 함수 만들고 호출하는 방법 완벽 가이드

Bash 스크립트에서 함수를 생성하고 호출하는 방법을 빠르게 익혀보세요.

함수(Function)는 특정 작업을 수행하기 위해 재사용할 수 있는 코드 블록입니다. 함수를 활용하면 모듈화가 향상되고 코드의 재사용성이 크게 높아집니다.

Bash에는 echoread 같은 내장 함수가 제공되지만, 필요에 따라 직접 함수를 만들어 사용할 수도 있습니다.

Bash에서 함수 생성하기

Bash에서 함수를 선언하는 방법은 두 가지입니다.

1. 함수 이름만 사용하는 방식

functionName(){
  // 함수 본문
}

한 줄로 압축한 버전:

functionName(){ echo "hello"; }

2. function 키워드를 사용하는 방식

function functionName {
  // 함수 본문
}

한 줄로 압축한 버전:

function functionName { echo "hello"; }

function 키워드로 함수를 선언할 때는 괄호 ()가 필요하지 않다는 점에 유의하세요.

Bash 함수의 핵심 포인트

  • 중괄호 {} 사이의 코드가 함수의 본문이자 유효 범위(scope)입니다.
  • 함수를 호출할 때는 스크립트 어디에서든 함수 이름만 적으면 됩니다.
  • 함수는 반드시 호출되기 전에 정의되어 있어야 합니다.
  • 한 줄 압축 형태로 작성할 때는 마지막 명령어 뒤에 세미콜론 ;이 반드시 있어야 합니다.

예제: Hello World 출력 함수

다음 코드는 콘솔에 "Hello World"를 출력하는 함수를 만듭니다. 함수 이름은 printHello입니다.

#!/bin/bash

printHello(){
    echo "Hello World!"
}

Bash에서 함수 호출하기

그렇다면 위에서 만든 함수는 어떻게 호출할까요? 방법은 아주 간단합니다. 스크립트 내에서 함수 이름만 작성하면 해당 함수가 실행됩니다.

#!/bin/bash

printHello(){
    echo "Hello World!"
}

# 함수 이름만 적으면 스크립트 어디서든 호출 가능

printHello

실행 결과:

"Hello World"

함수에 인자 전달하기

앞서 만든 printHello() 함수는 매개변수가 없습니다. 호출할 때마다 항상 "Hello World"만 출력되죠. 하지만 좀 더 범용적인 함수를 만들고 싶다면 어떻게 해야 할까요? 예를 들어 인자를 함께 전달하면, 그 값을 그대로 출력하도록 만들 수 있습니다.

방법은 두 가지가 있습니다.

첫 번째 방법: $1로 인자 받기

먼저 printHello() 함수를 수정하여 전달받은 인자를 출력하도록 바꿔보겠습니다.

#!/bin/bash

printAny(){
    echo "Hello " $1
}

printAny World
printAny DevQa
printAny I love coding!

실행 결과:

Hello World
Hello DevQA
Hello I

세 번째 호출인 printAny I love coding!는 "Hello, I"만 출력된 것을 확인할 수 있습니다.

그 이유는 이 함수가 하나의 매개변수 $1만 받도록 설계되었기 때문입니다. "I love coding!"이라는 문장은 실제로 공백으로 구분된 3개의 인자로 처리됩니다.

전체 문장을 출력하려면 텍스트를 따옴표로 감싸주면 됩니다.

#!/bin/bash

printAny(){
    echo "Hello " $1
}

printAny "I love coding!"

실행 결과:

Hello I love coding

두 개 이상의 인자 활용하기

숫자를 인자로 전달해 덧셈을 수행하는 예제도 살펴보겠습니다.

#!/bin/bash

add() {
    result=$(($1 + $2))
    echo "Result is: $result"
}

add 1 2

실행 결과:

Result is: 3

함수에서 값 반환하기

Bash 함수는 값을 반환할 수도 있습니다.

전역 변수 활용하기

함수 내부에서 계산한 결과를 변수에 담으면, 함수 밖에서도 그 값을 사용할 수 있습니다.

#!/bin/bash

add() {
    result=$(($1 + $2))
}

add 1 2
echo "The sum is: "$result

실행 결과:

The sum is: 3

명령 치환으로 반환값 받기

또 다른 방법은 함수의 출력 결과를 변수에 할당하여, 필요할 때 언제든 사용하는 것입니다. 이때 local 키워드를 사용하면 변수가 함수 내부에서만 유효하므로 더 안전합니다.

#!/bin/bash

add () {
  local result=$(($1 + $2))
  echo "$result"
}

result="$(add 1 2)"
echo "The sum is: "$result

실행 결과:

The sum is: 3

이처럼 Bash 함수를 잘 활용하면 반복되는 코드를 줄이고, 스크립트의 가독성과 유지보수성을 크게 높일 수 있습니다.