bash script2020. 11. 10. 17:48

 

반달가면 이글루에서 백업 - bahndal.egloos.com/445813

 

조금 단순하긴 하지만, 리눅스 셸 스크립트에서도 일반 프로그래밍 언어에서처럼 함수(function)를 만들어서 사용할 수 있다.

일단 형식은 아래와 같다.

function [함수 이름](){
...
return
}

함수를 호출할 때는 그냥 함수 이름을 쓰면 된다. 아래의 예시를 보자. 수자 2개를 인자로 받아서 앞의 수와 뒤의 수를 더한 후 이 값을 제곱하는 계산을 하는 함수를 만들어 보면 대략 아래와 같다. 함수 이름은 arith_test이고 스크립트 안에서 arith_test 3 4 이런 식으로 호출해서 쓰면 된다. bc 명령을 이용한 산수 계산은 이전 게시물을 참고하자.

# 함수 arith_test: f = (x+y)^2
function arith_test(){
  echo "( $1 + $2 )^2 | bc"
  return
}

# main
# 함수 호출. (4+5)^2 계산후 결과를 화면에 출력
arith_test 4 5
# 함수 호출. (3+4)^2 계산후 결과를 result 변수에 할당
result=`arith_test 3 4`

함수에서 계산한 결과를 변수에 할당할 경우, 가장 처음 echo 명령으로 출력된 결과가 변수에 할당된다. 위의 예시에는 echo 명령이 하나뿐이므로 상관 없다. 결과를 변수에 할당하는 방식을 쓰고 싶다면, 함수 안에 echo 명령은 하나만 있는 것이 좋겠다.

스크립트에서 사용하는 변수는 기본적으로 전역변수(global variable)이다. 만약 함수 안에서만 의미가 있는 지역변수(local variable)를 사용하고 싶다면 함수 안에서 변수이름 앞에 local을 붙이면 되겠다. 아래의 예를 보자.

function var_test(){
  local test_var_local="LOCAL"
  test_var_global="GLOBAL"
  return
}

# main
# 함수 호출
var_test
# 변수값 확인. test_var_local 값은 출력되지 않음(지역변수)
echo "$test_var_local"
echo "$test_var_global"

함수 기능은 때에 따라 아주 요긴하게 쓸 수 있다!


 

 

728x90
Posted by 반달가면