
Shell 함수 기본: bash, zsh에서 함수 사용하기
Shell Script(bash나 zsh)에서 함수를 정의하고 사용하는 것은,
복잡한 작업을 반복하지 않게 해주는 아주 유용한 방법임.
Function 은 재사용가능한 코드의 묶음이라는 점에서 Shell Script에서도 많이 애용됨.
하지만, Shell 프로그래밍은 다른 프로그래밍 언어(Python, Java 등)와는 Function의 문법이 조금 차이가 있음: 특히 호출 부분
1. Shell 함수의 특징
Shell 함수는 다른 프로그래밍 언어에서와 달리, command 처럼 호출됨!
Python에서
del이 명령어이므로del var같이 호출됨을 기억!
즉, 다른 언어처럼 func_name(arg1, arg2) 형태로 호출되지 않음:
2. Shell Script에서 Function Definition
greet() {
echo "Hello, $1!"
}
또는 POSIX 스타일:
greet {
echo "Hello, $1!"
}
- 두 방식 모두 같은 결과임.
- 즉, 괄호
()는 문법적 선택사항으로 다른 프로그래밍 언어와 차이가 있음.
Shell Script에서 Function Call
앞서 정의한 function을 다음과 같이 호출
greet Kim
Kim이라는 인자가$1에 전달됨.- 즉, Shell Script에서 함수는 command처럼 호출됨.
Shell에서는 함수도 명령어처럼 취급되기 때문에 공백으로 인자를 구분하고 괄호는 쓰지 않음.
함수 인자 처리: $1, $2, $@, $#
Shell 함수에서 인자는 아래와 같은 방식으로 전달되고 사용할 수 있음:
$1: 첫 번째 인자$2: 두 번째 인자$@: 모든 인자를 각각 따로 (보존)$*: 모든 인자를 하나의 문자열로$#: 전달된 인자의 개수
Example
print_info() {
echo "전체 인자 수: $#"
echo "첫 번째 인자: $1"
echo "모든 인자 (개별):"
for arg in "$@"; do
echo "- $arg"
done
}
print_info apple banana "choco pie"
출력 결과는 다음과 같음:
전체 인자 수: 3
첫 번째 인자: apple
모든 인자 (개별):
- apple
- banana
- choco pie
$@는 인자 각각을" "로 감싸 보존하고,$*는 한 문자열로 이어붙임.
주의할 것은 "choco pie"처럼 공백 포함 인자 처리의 경우 double quotes로 감싸야 함..
Shell Script에서 Functon이 정의되는 위치
Shell Script의 함수는 보통 다음과 같이 사용됨:
- 일회성 스크립트 파일 내에서 함수 정의 후 바로 호출
.bashrc또는.zshrc에 넣어서 반복 사용- 외부
.sh파일로 만들어source하여 재사용
Example
# myutils.sh
say_hi() {
echo "Hi, $1!"
}
# main.sh
source ./myutils.sh
say_hi Kim
Example: sum function
sum() {
total=0
for n in "$@"; do
total=$((total + n))
done
echo "합계는 $total 입니다"
}
sum 3 5 7
같이보면 좋은 자료들
2023.07.19 - [Linux/shell] - [Bash] shell 기본 : 변수 설정 및 반복구문
[Bash] shell 기본 : 변수 설정 및 반복구문
shell script란shell에서 동작하는 script로,여러 command 들을 하나의 파일로 저장하고 해당 파일을 line별로 interpreting하여 수행시킬 수 있게 해주는 것을 가르킴.(.py파일이 python interptreter에 의해 동작하
ds31x.tistory.com
2025.07.25 - [shell] - Shell Script Conditionals(조건문)-test, [], [[]],(())
Shell Script Conditionals(조건문)-test, [], [[]],(())
위의 그림은 가장 많이 애용되는 Extended Conditionals 를 정리(Bash 기준)한 것임. 이외에도 셸 스크립트에서 조건을 검사할 때는 test 또는 다양한 괄호 구문을 사용함 . 대표적으로 다음 네 가지 방법
ds31x.tistory.com
Bash scripting cheatsheet
Variables · Functions · Interpolation · Brace expansions · Loops · Conditional execution · Command substitution · One-page guide to Bash scripting
devhints.io
'shell' 카테고리의 다른 글
| iconv, clip.exe, pbcopy, xclip, Set-Clipboard (0) | 2025.12.29 |
|---|---|
| kill: Process에게 Signal을 보내기. (3) | 2025.07.25 |
| Shell Script Conditionals(조건문)-test, [], [[]],(()) (1) | 2025.07.25 |
| [Bash] File과 directory 관련 command (0) | 2024.05.20 |
| [Shell] command substitution (1) | 2023.10.01 |