Bash 스크립트에서 함수를 생성하고 호출하는 방법을 빠르게 익혀보세요.
함수(Function)는 특정 작업을 수행하기 위해 재사용할 수 있는 코드 블록입니다. 함수를 활용하면 모듈화가 향상되고 코드의 재사용성이 크게 높아집니다.
Bash에는 echo나 read 같은 내장 함수가 제공되지만, 필요에 따라 직접 함수를 만들어 사용할 수도 있습니다.
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 함수를 잘 활용하면 반복되는 코드를 줄이고, 스크립트의 가독성과 유지보수성을 크게 높일 수 있습니다.