학습
Shell 함수 정의 및 호출
Shell 함수 정의 및 호출 — 초급
함수 정의 및 호출
1. 도입 (왜 배워야 하는가)
Shell 스크립트에서 함수는 코드의 재사용성을 높이고, 프로그램의 구조를 명확히 하는 데 필수적입니다. 실무에서는 여러 작업을 반복적으로 수행해야 할 때, 함수를 사용하여 코드의 중복을 줄이고 유지보수를 용이하게 할 수 있습니다. 만약 함수를 사용하지 않는다면, 같은 코드를 여러 번 작성해야 하며, 이는 코드의 가독성을 떨어뜨리고 수정 시 오류를 유발할 가능성이 높습니다. 예를 들어, 같은 작업을 수행하는 스크립트를 여러 곳에서 작성하면, 하나의 스크립트를 수정할 때 다른 스크립트에 반영하지 못하는 문제가 발생할 수 있습니다.
2. 핵심 개념 설명
함수는 특정 작업을 수행하는 코드 블록으로, 입력값을 받아 처리한 후 결과를 반환하는 구조입니다. 이를 실생활에 비유하자면, "커피를 만드는 과정"이라고 할 수 있습니다. 커피를 만들기 위해서는 물을 끓이고, 커피 가루를 넣고, 컵에 따르는 등의 과정을 거칩니다. 이 모든 과정을 매번 새로 설명하기보다는 "커피 만들기"라는 함수로 묶어 놓으면 필요할 때마다 쉽게 호출하여 사용할 수 있습니다.
| 용어 | 설명 |
|---|---|
| 함수 정의 | 함수를 생성하는 과정 |
| 함수 호출 | 정의된 함수를 사용하는 과정 |
| 매개변수 | 함수에 전달되는 입력값 |
| 반환값 | 함수가 처리 후 돌려주는 값 |
3. 기본 코드 예제
다음은 Shell에서 함수를 정의하고 호출하는 기본적인 예제입니다.
#!/bin/bash
# 함수를 정의합니다.
greet() {
echo "안녕하세요, $1!"
}
# 함수를 호출합니다.
greet "홍길동"
실행 결과:
안녕하세요, 홍길동!
코드 한 줄씩 동작 설명:
#!/bin/bash: 이 스크립트가 Bash에서 실행될 것임을 나타냅니다.greet() { ... }:greet라는 이름의 함수를 정의합니다. 중괄호{}안에 함수의 실행 내용이 포함됩니다.echo "안녕하세요, $1!": 함수가 호출될 때 첫 번째 매개변수$1을 사용하여 인사 메시지를 출력합니다.greet "홍길동":greet함수를 호출하며, "홍길동"을 매개변수로 전달합니다.- 함수는 코드 재사용성을 높이고, 유지보수를 용이하게 합니다.
- 매개변수와 반환값을 통해 함수의 입력과 출력을 정의할 수 있습니다.
- 올바른 함수 정의 및 호출 방법을 익히는 것이 중요합니다.
- 다음에 학습하면 좋은 주제는 조건문 및 반복문입니다. 이를 통해 더 복잡한 스크립트를 작성할 수 있습니다.
4. 실전 활용 예제
예제 1: 간단한 계산기
쇼핑몰에서 가격 계산을 할 때 자주 사용할 수 있습니다.
#!/bin/bash
# 두 수의 합을 계산하는 함수입니다.
add() {
echo $(($1 + $2))
}
# 함수 호출
result=$(add 5 10)
echo "결과: $result"
상황 설명: 사용자로부터 두 개의 숫자를 입력받아 합산하는 기능을 제공하여, 가격 계산 시 활용할 수 있습니다.
예제 2: 파일 존재 여부 확인
서버 관리 시 특정 파일의 존재 여부를 체크할 때 유용합니다.
#!/bin/bash
# 파일이 존재하는지 확인하는 함수입니다.
check_file() {
if [ -e "$1" ]; then
echo "$1: 파일이 존재합니다."
else
echo "$1: 파일이 존재하지 않습니다."
fi
}
# 함수 호출
check_file "test.txt"
상황 설명: 특정 파일이 존재하는지 확인하여, 서버 스크립트가 올바르게 작동하는지 체크할 수 있습니다.
5. 흔한 실수와 주의사항
실수 1: 함수 호출 시 인자 생략
잘못된 코드:
greet
올바른 코드:
greet "홍길동"
-> 매개변수를 꼭 전달해야 합니다.
실수 2: 함수 정의 시 중괄호 누락
잘못된 코드:
greet()
echo "안녕하세요, $1!"
}
올바른 코드:
greet() {
echo "안녕하세요, $1!"
}
-> 정의 시 중괄호 {}를 반드시 사용해야 합니다.