Linux의 Bash Shell Script에서 함수를 정의하고 호출하는 방법을 소개합니다.
1. 함수 Syntax
다음과 같이 함수를 정의할 수 있습니다. 함수 안에는 쉘 명령어들을 호출할 수 있습니다.
function_name() {
commands
}
2. 함수 정의 및 호출
다음과 같이 함수를 정의하고 호출할 수 있습니다. 함수 내부에는 echo를 이용하여 간단한 문자열을 터미널에 출력합니다.
함수 호출은 my_function
처럼 함수 이름만 입력하면 됩니다.
#!/bin/bash
# Define a function
my_function() {
echo "Calling my_function"
}
# Invoke a function
my_function
Output:
$ sh func.sh
Calling my_function
3. 함수에 인자 전달
함수에 인자를 전달할 때는 함수 이름 다음에 인자를 순차적으로 입력하면 됩니다. 아래 예제에서는 aaa
와 123
을 인자로 함수에 전달하였습니다.
함수 내부에서는 $1
, $2
와 같은 형식으로 인자에 접근할 수 있습니다. $1
은 첫번째로 전달된 인자, $2
는 두번째로 전달된 인자를 의미합니다. 여러 인자를 전달할 때, 이처럼 $
에 숫자를 붙여서 접근할 수 있습니다.
#!/bin/bash
my_function() {
echo "Calling my_function p1: $1, p2: $2"
}
my_function aaa 123
Output:
$ sh func.sh
Calling my_function p1: aaa, p2: 123
4. 함수에서 값 리턴 (1)
함수에서 어떤 값을 리턴할 때 return
키워드를 사용하면 됩니다. 다른 언어들과 같이 return이 호출되면, 함수가 종료되며 값이 리턴됩니다.
리턴이 되면, 함수 외부에서 $?
를 통해 return value를 읽을 수 있습니다.
다음 예제 코드와 실행 결과를 보시면 쉽게 이해할 수 있습니다.
#!/bin/bash
my_function() {
echo "Calling my_function p1: $1, p2: $2"
return 100
}
my_function aaa 123
ret=$?
echo "Return value: $ret"
Output:
$ sh func.sh
Calling my_function p1: aaa, p2: 123
Return value: 100
5. 함수에서 값 리턴 (2)
함수에서 리턴된 값을 변수에 직접 할당하고 싶으면 아래와 같이 구현할 수 있습니다.
함수에서 echo로 출력한 문자열을 화면에 출력하지 않고, 변수에 할당하는 방법인데요. 함수 내에서 echo를 여러번 사용한다면, 출력된 모든 내용이 변수에 할당되는 문제가 있습니다.
#!/bin/bash
my_function() {
echo 100
}
ret=$(my_function aaa 123)
echo "Return value: $ret"
Output:
$ sh func.sh
Return value: 100
6. 함수에서 값 리턴 (3)
실제로 함수에서 값을 리턴하지 않고, 전역 변수에 값을 할당하고, 함수 밖에서 사용하는 방법도 있습니다.
#!/bin/bash
my_function() {
echo "Calling my_function p1: $1, p2: $2"
ret=100
}
my_function aaa 123
echo "Return value: $ret"
Output:
$ sh func.sh
Calling my_function p1: aaa, p2: 123
Return value: 100
Related Posts
- Bash Shell - 문자열에서 마지막 문자 N개 제거
- Bash Shell - 문자열에서 첫번째 문자 N개 제거
- Bash Shell - 실행 시간 측정 방법
- Bash Shell - 나눗셈에서 버림, 올림, 반올림 처리
- Bash Shell - 숫자가 양수인지 음수인지 확인하는 방법
- Bash Shell - 자신의 스크립트 파일 이름 가져오기
- Bash Shell - 문자열 출력 방법(echo, printf)
- Bash Shell - seq 명령어로 반복문 구현 및 예제
- Bash Shell - File 테스트 연산자
- Bash Shell - 무한 루프 (Infinite loop)
- Bash Shell - 숫자 비교 연산자
- Bash Shell - 문자열 비교 연산자
- Bash Shell - 대문자, 소문자로 변환 (Uppercase, Lowercase)
- Bash Shell - 스트립트를 root로 실행했는지 확인
- Bash Shell - 명령어 실행 결과를 변수에 저장
- Bash Shell - select로 선택 메뉴 구현
- Bash Shell - 변수가 정의되었는지 확인하는 방법
- Bash Shell - sleep 함수, 특정 시간 멈추기
- Bash Shell - 파일이 존재하는지 확인
- Bash Shell - 문자열 자르기 (substring, split)
- Bash Shell - 날짜, 시간 가져오기
- Bash Shell - Case 조건문
- Bash Shell - 파일 읽는 방법
- Bash Shell - 사용자로부터 입력 받기
- Bash Shell - 문자열을 연결하는 방법
- Bash Shell - 파일 생성 및 문자열 추가
- Bash Shell - 숫자 변수 증가/감소 시키기
- Bash Shell - 배열 할당, 길이, 객체 포함 여부 확인
- Bash Shell - 문자열 비교, 문자열 포함 여부 확인
- Bash Shell - 변수 선언, 할당
- Bash Shell - 조건문(if-else)
- Bash Shell - 숫자 연산 (더하기, 빼기, 곱하기, 나누기)
- Bash Shell - 반복문(for, while, until loop)
- Bash Shell - Command Line으로 전달된 인자 받기
- Bash Shell - 함수(Function)