Bash Shell - 함수(Function)

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. 함수에 인자 전달

함수에 인자를 전달할 때는 함수 이름 다음에 인자를 순차적으로 입력하면 됩니다. 아래 예제에서는 aaa123을 인자로 함수에 전달하였습니다.

함수 내부에서는 $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
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha