본문 바로가기
목차
shell

Shell 함수 기본: bash, zsh에서 함수 사용하기

by ds31x 2025. 7. 25.
728x90
반응형

https://devhints.io/bash

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

https://devhints.io/bash

 

Bash scripting cheatsheet

Variables · Functions · Interpolation · Brace expansions · Loops · Conditional execution · Command substitution · One-page guide to Bash scripting

devhints.io

 

728x90