Bash에서 함수를 사용하는 방법

Suraj Joshi 2023년1월30일
  1. Bash에서 함수 정의
  2. Bash의 변수 범위
  3. Bash의 함수에서 값 반환
  4. Bash 함수에 인수 전달
Bash에서 함수를 사용하는 방법

함수는 모든 프로그래밍 언어에서 가장 중요한 측면 중 하나이며 코드를 재사용하고 읽기 쉽게 만듭니다. 반복적으로 사용되는 동일한 코드가 함수 내에 작성됩니다. 코드 블록이 필요할 때 정의 된 함수를 호출하기 만하면됩니다.

Bash에서 함수 정의

Bash에서 함수를 정의하려면 다음 두 가지 접근 방식 중 하나를 사용할 수 있습니다.

이 접근 방식에서는 함수 이름 뒤에 괄호를 씁니다. 그런 다음 중괄호 안에 함수를 정의합니다. 이 형식을 사용하는 함수는 다음 형식 중 하나를 사용하여 정의 할 수 있습니다.

function_name(){
statements
}
function_name() { statements }

이 접근 방식에서는 함수 이름 앞에function 키워드를 지정합니다.

function_name(){
statements
}
function_name() { statements }

중괄호 안의 문은 함수의 기능을 결정합니다. 함수의 이름은 함수가하는 일과는 아무런 관련이 없지만 설명적인 함수 이름을 만들어야합니다. 함수를 정의해도 아무 일도 일어나지 않습니다. 함수 정의에서 명령을 실행하려면 함수를 호출해야합니다.

Bash에서 함수를 호출하려면 함수 이름을 사용합니다.

#! /bin/bash

greet(){
    echo 'Hello, Folks. Welcome to DelftStack!'
}

greet

출력:

Hello, Folks. Welcome to DelftStack!

여기서는 greet라는 이름으로 처음에 함수를 정의한 다음 함수를 호출합니다. 함수를 호출하면 함수 정의 내부의 명령문이 실행되므로 터미널에 Hello, Folks. Welcome to DelftStack!가 인쇄 된 것을 볼 수 있습니다.

다른 접근 방식을 사용하여 함수를 다음과 같이 정의 할 수도 있습니다.

#! /bin/bash

function greet(){
    echo 'Hello, Folks. Welcome to DelftStack!'
}

greet

출력:

Hello, Folks. Welcome to DelftStack!

우리는 함수를 호출하기 전에 항상 함수를 정의해야합니다.

Bash의 변수 범위

변수의 범위는 다른 프로그래밍 언어와 마찬가지로 Bash에서 전역 또는 로컬 일 수 있습니다. 그러나 변수의 기본 범위는 함수 범위 내에서 선언 되더라도 항상 전역입니다. 변수를 지역적으로 만들려면local 키워드를 사용해야합니다.

#! /bin/bash

gvar1=1
gvar2=2

change_variables() {

    local gvar1=10
    gvar2=7
    
    echo "Inside Function: gvar1: $gvar1, gvar2: $gvar2"
}

echo "Before executing function: gvar1: $gvar1, gvar2: $gvar2"

change_variables

echo "After executing function: gvar1: $gvar1, gvar2: $gvar2"

출력:

Before executing function: gvar1: 1, gvar2: 2
Inside Function: gvar1: 10, gvar2: 7
After executing function: gvar1: 1, gvar2: 7

여기서 맨 위에 선언 된gvar1gvar2는 전역 변수입니다.

함수 내에서gvar1gvar1과 함께local 키워드를 사용하기 때문에 지역 변수로 선언되고gvar2local 키워드가 없기 때문에 여전히 전역 변수를 참조합니다. 따라서gvar2의 값은 함수에 의해 전역 적으로 변경되고gvar1의 값은 함수 내에서만 변경됩니다.

Bash의 함수에서 값 반환

다른 프로그래밍 언어와 달리 Bash는 함수에서 값을 반환하는 것을 허용하지 않습니다. Bash 함수에서 반환 된 값은 함수에서 실행 된 마지막 문의 상태입니다. 숫자 0은 성공을 나타내고 1-255의 숫자는 실패를 나타냅니다. return키워드를 사용하여 함수의 종료 상태를 지정할 수 있습니다. return 문은 함수를 종료합니다.

#! /bin/bash

return_value(){
  echo "This function returns 20!"
  return 30
  echo "After return statement"
}

return_value
echo $?

출력:

This function returns 20!
30

여기서 return_value함수가 return문을 사용하여 값 30을 반환하고 값이 $?변수에 할당 된 것을 볼 수 있습니다.

또한 return문 아래에있는 명령이 실행되지 않기 때문에 return문이 실행 된 후에 함수가 종료됨을 알 수 있습니다.

함수에서 일부 값을 반환하려면 값을 전역 변수에 할당하고 함수 외부에서 변수에 액세스하여 값을 검색 할 수 있습니다.

#! /bin/bash

send_message(){
  message_from_function="Hello From the function!"
}
send_message
echo $message_from_function

출력:

Hello From the function!

프로그램에서 반환 할 값을 전역 변수message_from_function에 할당 한 다음 변수의 반환 값에 액세스합니다.

Bash 함수에 인수 전달

Bash 함수에 인수를 전달하려면 함수 뒤에 인수를 입력하면됩니다. 둘 이상의 인수를 함수에 전달하려면 인수를 공백으로 구분합니다. 인수의 잘못된 구문 분석을 방지하기 위해 인수를 큰 따옴표로 묶을 수 있습니다.

매개 변수는 위치에 따라$1 $2 등으로 액세스됩니다. $0은 함수 이름을 나타내고$#은 함수의 위치 인수 개수를 나타냅니다.

#! /bin/bash

send_message(){
  message_from_function="Hello $1 "
}
send_message
echo $message_from_function "Delft!"

출력:

Hello Delft!

여기서 Delft!인수가 함수에 전달되고 $1매개 변수에 의해 함수에서 액세스되며, 함수의 최종 출력으로 Hello Delft!가 표시됩니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn