System Admin

본문 바로가기
사이트 내 전체검색


RedHat Linux >> System Administration for Redhat Linux
[목차]
제2장 쉘 프로그래밍

    11. 함수의 사용


셸 스크립트를 작성할 때 함수도 만들어 사용할 수 있습니다. 이것은 간단한 함수를 만들어 본 것인데 다음 내용을 수행하면 화면에 'testfunc'를 출력하게 됩니다.

# vi func1.sh

#!/bin/sh
testfunc() {

echo "test func"

}

testfunc

# sh func1.sh

 

함수에서 아규먼트를 전달하려면 어떻게 하면 될까요? 다음 예를 봅시다.

# a function to start a program.
daemon() {

    # test syntax.
    case $1 in

    ")

         echo '$0: usage: daemon [+/-nicelevel] {program}'

         return 1;;

    -*|+*)

         nicelevel=$1

         shift;;

    *)

         nicelevel=0;;

    esac


    # save basename.
    base=`basename $1`


    # see if it's already running.
    [ "`pidofproc $base`" != ""] && return


    # echo basename of the program.
    echo -n "$base"


    # make sure it doesn't core dump anywhere; while this could mask
    # problems with the daemon, it also closes some security problems ulimit -c 0

    # and start it up.

    nice -n $nicelevel "$@"

}

앞의 예는 레드햇 리눅스에서 사용되는 스크립트 중 하나인데 기능은 프로그램을 수행하는 것입니다. 이 스크립트는 다음과 같은 식으로 수행할 수 있습니다.

daemon <수행할 프로그램>

앞에서 보면 아규먼트의 전달 또한 외부 아규먼트의 전달도 마찬가지로 $1을 사용했음을 알 수 있습니다. 즉 함수로 전달되는 아규먼트 또한 외부 아규먼트와 마찬가지로 처리되므로 $1은 첫 번째 아규먼트를, $2는 두 번째 아규먼트를 뜻하는 것입니다. 마지막으로 $@은 모든 아규먼트를 뜻하게 됩니다.

앞의 예를 좀더 살펴보면

ulimit -c 0

라는 부분을 볼 수 있는데 이 부분은 프로그램의 수행 중 에러가 발생할 경우 core라는 메모리 dump 파일을 만들게 되는데 이것을 생성하지 못하도록 하는 것입니다.

이로써 대략적인 셸 스크립트에 대해 알아보았는데 대충 감을 잡을 수 있겠죠? 그러면 이번에는 실제로 리눅스에서 사용되는 스크립터를 분석하면서 설명하겠습니다.

 

[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.