Skip to content

bash function #
Find similar titles

Structured data

Category
Programming

Bash 쉘 함수(Bash function) #

함수(Function) 정의 #

function은 명령이나 명령의 집합으로써, 대부분의 프로그래밍 언어와 마찬가지로 논리적인 방식으로 코드 조각을 그룹화하거나 재귀기술을 구현한다. 함수를 호출하는 것은 다른 프로그램을 호출하는 원리와 같다.

형태 #

일반적으로 아래와 같이 "함수명 {code}" 형식으로 작성한다.

function name_of_function
{
    commands
}

unset 명령을 사용하여 함수를 메모리에서 제거할 수 있다.

- unset -f function_name

변수와 return value

- 매개변수의 전달은 위치 매개변수를 사용하여 function으로 넘겨줄 수 있다.
- function에서 사용하는 위치 매개변수는 통용범위(scope)가 함수 내로 한정된다.
- function의 매개변수는 function 밖에서 사용 중인 다른 위치 매개변수에게는 아무런 영향을 미치지 않는다.
- 내장 명령 local 변수를 사용하면 현재 function에게만 유효하다.
- return 명령은 function 종료 후, 제어를 function을 호출한 곳으로 되돌려준다.
- return 명령에 아무런 값도 지정하지 않은 경우, function의 반환값은 스크립트 안에서 최근에 사용된 명령의 종료 상태가 된다.
- 리눅스 명령의 출력을 가져올 때와 동일하게 function 전체를 괄호 안에 넣고 $를 사용하여 출력을 특정 변수에 저장할 수 있다.

Image


* 유의사항:
- 예약어(reserved word)로 함수명이나 변수명을 사용하면 안된다.
- 예약어는 type 명령어를 통해 확인하며, -a 옵션을 사용하면 해당 위치를 알 수 있다.
- if 절: if와 elif의 "["와 "]"의 바로 앞/뒤에는 공백이 필수이며, 마지막은 fi를 써서 조건절을 종료한다.

적용 #

<함수를 이용한 동시 작업>

- 보통 bash를 실행하는 경우, 위에서 아래로 순차적으로 실행/완료가 진행되는 방식이나 함수를 사용하여 BLAST와 같이 병렬처리가 요구되는 경우 유용하게 사용할 수 있다.
** 고려사항: 함수 내부의 변수 앞에 local을 추가하여 지역변수(local variable)로 선언해야한다. 또한, 스크립트 종료와 작업의 종료는 별개이므로 echo와 같은 명령어를 통해 함수의 시작과 종료에 대한 출력 상황을 알 수 있도록 한다.

함수명 파라미터1 &
함수명 파라미터2 &
...

요즘 대부분의 CPU가 멀티쓰레드인 경우가 많아 함수를 이용하여 활용성을 높일 수 있다.

참고 #

0.0.1_20210630_7_v33