bash function
#
Find similar titles
- (rev. 7)
- green
Structured data
- Category
- Programming
Table of Contents
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 전체를 괄호 안에 넣고 $를 사용하여 출력을 특정 변수에 저장할 수 있다.
* 유의사항:
- 예약어(reserved word)로 함수명이나 변수명을 사용하면 안된다.
- 예약어는 type 명령어를 통해 확인하며, -a 옵션을 사용하면 해당 위치를 알 수 있다.
- if 절: if와 elif의 "["와 "]"의 바로 앞/뒤에는 공백이 필수이며, 마지막은 fi를 써서 조건절을 종료한다.
적용 #
<함수를 이용한 동시 작업>
- 보통 bash를 실행하는 경우, 위에서 아래로 순차적으로 실행/완료가 진행되는 방식이나 함수를 사용하여 BLAST와 같이 병렬처리가 요구되는 경우 유용하게 사용할 수 있다.
** 고려사항: 함수 내부의 변수 앞에 local을 추가하여 지역변수(local variable)로 선언해야한다. 또한, 스크립트 종료와 작업의 종료는 별개이므로 echo와 같은 명령어를 통해 함수의 시작과 종료에 대한 출력 상황을 알 수 있도록 한다.
함수명 파라미터1 &
함수명 파라미터2 &
...
요즘 대부분의 CPU가 멀티쓰레드인 경우가 많아 함수를 이용하여 활용성을 높일 수 있다.
참고 #
- http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-8.html
- http://blog.naver.com/signal97/152787939
- http://www.ibric.org/myboard/read.php?Board=news&id=255713&BackLink=L215Ym9hcmQvbGlzdC5waHA/Qm9hcmQ9bmV3cyZQQVJBMz0xMA==
- http://bahndal.egloos.com/535211
- http://ryanstutorials.net/bash-scripting-tutorial/bash-functions.php