쉘 스크립트를 작성하다 보면 함수를 사용해서 반복적인 일들을 수행 하면 좋을 경우가 있습니다. 다른 프로그램 언어와 마찬가지로 쉘 스크립트 역시 함수를 지원하고 이를 통해 수많은 기능 구현이 가능합니다.
그럼 선언하는 방법을 비롯해 가장 기초적인 상황에 대해서 알아보도록 하겠습니다.
#!/bin/bash #함수선언 및 정의 func () { 수행문 }
func |
문법 형식은 다음과 같습니다.
C언어를 기준으로 비교할 때 큰 부분은 비슷하지만 몇가지 차이점이 있습니다. 먼저, 쉘 스크립트에서는 함수를 따로 선언하고 사용할 수가 없고 선언과 동시에 정의를 해야 하고 스크립트의 상단에 먼저 배치해서 사용해야 됩니다. 이 부분의 인터프리터 언어에서 나오게 되는 한계점이라고 생각하시면 될거 같습니다.
그리고 함수를 선언할 때 타입을 지정해야 할 필요가 없으며 사용할 때는 함수의 이름으로 만 사용이 가능합니다. 그럼 간단한 샘플 코드를 통해 마무리를 하도록 하겠습니다.
#!/bin/bash func() echo "CALL func()" |
root@ubuntu:/shell# ./func.sh |
샘플 코드에는 Argument 값도 추가로 넣어서 해보았습니다. 이렇게 Argument를 이용할 경우에는 다양한 인풋값을 함수로 보내서 보다 기능을 다양하게 사용할 수 있습니다.
#!/bin/bash func() echo "CALL func()" |
root@ubuntu:/shell# ./func.sh |
마지막으로 함수 리턴값을 활용하는 방법을 알아보겠습니다.
다른 여타 프로그램과 마찬가지로 return 으로 넘길 수 있으며 바로 뒤에 $? 예약어로 결과를 받을 수 있습니다. 여기서 중요한 점은 함수 바로 뒤에서 $?을 활용해야되며 이후 다른 명령어를 활용하게 되면 해당 명령어의 return 값을 들고 온다는 점 유의 바랍니다.
'리눅스 쉘 스크립트' 카테고리의 다른 글
쉘 스크립트 - 문자열 (기초편) : cut, grep, awk (0) | 2017.11.15 |
---|---|
쉘 스크립트 - 함수 (2) : 백그라운드 & 멀티스레드 (0) | 2017.11.10 |
쉘 스크립트의 알아두면 쓸모있는 환경변수(예약어) (0) | 2017.11.05 |
쉘 스크립트의 인자를 보다 세련되게 (getopt) (1) | 2017.10.29 |
쉘 스크립트 기본 문법 - switch, case (0) | 2017.10.26 |