본문 바로가기
UNIX 시스템

Function - 13주차 수업 - 2

by 세인트킴 2023. 6. 2.

Function

function_name ()
{
	statements
}

or
function function_name {
	statements
}

Function 예

#!/bin/bash
hello () 
{
	echo "hello 함수입니다."
}
hello

함수의 인자

첫번째 인자 $1, 두번째 인자$2

인자를 사용하는 예

#!/bin/bash
geek () {
	echo 1st argument: $1
    echo 2nd argument: $2
}
geek Hello World

변수(variable)

데이터를 미리 선언하지 않고 사용, 변수에 할당되는 내용에 따라 타입이 결정된다.

전역변수(global variable)

#!/bin/bash
myfunction ()
{
	v="Hello" // 3 - 지역변수 v에 Hello라는 문자열을 할당한다.
}
v="World" // 1 - 변수 v에 World 문자열을 할당한다.
myfuntion // 2 - 변수 myfunction을 호출한다.
echo $v // 4 - 전역변수 v를 출력한다. 함수 내부에서의 v할당이 외부에서는 유요하지 않아서 World가 출력된다.

지역변수(local variable)

#!/bin/bash
function myfunc 
{
	local var=World #지역변수 var에 World문자열을 할당한다.
    echo "In myfunc: $var" #var에 할당된 값을 출력한다.
}
var=Hello #1 전역변수 var에 hello문자열을 할당한다.
echo "Before myfunc: $var" #2 변수 var을 출력한다.
myfunc #함수를 호출한다. #3 함수를 호출한다.
echo "After myfunc: $var" #4전역변수 var을 출력한다.

local 키워드를 사용하면 지역변수 var은 함수 내부에서만 적용된다.

 


 

실습1(argument)

더보기

함수 sum은 인자로 2개 숫자 a, b를 전달받아 a, b까지의 합을 계산한다. 프로그램 sigma는 사용자로부터 2개 인자를 전달받아 함수 sum을 출력한다.

#!/bin/bash
sum () 
{
a=$1
b=$2
sum=0
for i in $(seq $a $b)
do
	let sum+=i
done
echo $sum
}
sum $1 $2

실습2(last, grep, wc)

더보기

함수 sess_on_wday는 인자로 요일(Mon, Tue, Wen, Thu, Fri, Sat, Sun 중 하나)을 넘겨받아 해당 요일의 총 로그인 세션 수를 출력한다(last명령 이용). 함수 sess_on_wday와 이를 호출하는 프로그램 sess_num을 작성하시오.

#!/bin/bash
sess_on_wday () 
{
	wday=$1
    count=$(last | grep $wday | wc -l)
    echo $count
}
sess_on_wday $1

실습3(for)

더보기

위에 작성한 파일sess_num을 수정해서 sess_on_wday를 호출하는 프로그램을 작성하시오.

함수 sess_for_week는 Mon~Sun 사이의 각 요일별로 총 세션 수를 다음과 같은 형태로 출력한다.

Mon 213

Tue 122

Wed 320

#!/bin/bash
sess_on_wday ()
{
	wday=$1
    count=$(last | grep $wday | wc -l)
    echo $wday $count
}

sess_for_week ()
{
	for i in Mon Tue Wed Thu Fri Sat Sun
    do
    	sess_on_wday $i
    done
}
sess_for_week $i