반응형

쉘 스크립트를 작성하다 보면 함수를 사용해서 반복적인 일들을 수행 하면 좋을 경우가 있습니다. 다른 프로그램 언어와 마찬가지로 쉘 스크립트 역시 함수를 지원하고 이를 통해 수많은 기능 구현이 가능합니다.

 

그럼 선언하는 방법을 비롯해 가장 기초적인 상황에 대해서 알아보도록 하겠습니다.

 

 #!/bin/bash

 #함수선언 및 정의

 func ()

 {

   수행문

 }

 

 func

 

문법 형식은 다음과 같습니다.

 

C언어를 기준으로 비교할 때 큰 부분은 비슷하지만 몇가지 차이점이 있습니다. 먼저, 쉘 스크립트에서는 함수를 따로 선언하고 사용할 수가 없고 선언과 동시에 정의를 해야 하고 스크립트의 상단에 먼저 배치해서 사용해야 됩니다. 이 부분의 인터프리터 언어에서 나오게 되는 한계점이라고 생각하시면 될거 같습니다.

 

그리고 함수를 선언할 때 타입을 지정해야 할 필요가 없으며 사용할 때는 함수의 이름으로 만 사용이 가능합니다. 그럼 간단한 샘플 코드를 통해 마무리를 하도록 하겠습니다.

 

 #!/bin/bash

func()
{
        echo func $1 $2 $3
}

echo "CALL func()"
func "hello" "World" "WoW"

root@ubuntu:/shell# ./func.sh
CALL func()
func hello World WoW

 

샘플 코드에는 Argument 값도 추가로 넣어서 해보았습니다. 이렇게 Argument를 이용할 경우에는 다양한 인풋값을 함수로 보내서 보다 기능을 다양하게 사용할 수 있습니다.

 

 

#!/bin/bash

func()
{
        echo func $1 $2 $3
        return 100
}

echo "CALL func()"
func "hello" "World" "WoW"
echo "func return value : $?"

root@ubuntu:/shell# ./func.sh
CALL func()
func hello World WoW
func return value : 100

 

마지막으로 함수 리턴값을 활용하는 방법을 알아보겠습니다.

다른 여타 프로그램과 마찬가지로 return 으로 넘길 수 있으며 바로 뒤에 $? 예약어로 결과를 받을 수 있습니다. 여기서 중요한 점은 함수 바로 뒤에서 $?을 활용해야되며 이후 다른 명령어를 활용하게 되면 해당 명령어의 return 값을 들고 온다는 점 유의 바랍니다.

반응형

+ Recent posts