InfraPlatform

[Bash Shellscript 기본다지기 - for loop ]구구단을 출력하는 셀스크립 (초급)

IT오이시이 2014. 5. 29. 08:58
728x90


[Bash Shellscript 기본다지기]  for loop


구구단은 어떤 프로그램을 하더라도 가장 기본이 되는 예제 이다.

구구단 같이 반복되는 패턴은 프로그램에서 함수로 만들어 반복을 하게 되는데

여기서는 Shell Script 상에서 fuction을 선언하여 작성하였다.


다음과 같은 문제를 부여 받는 다면 어떻게 할 것인가 ?

1) 구구단 2단을 출력하는 스크립트 를 작성하시오

    ... 

    2 x 1  = 2

    2 x 2  = 4

    ... 중략 ...



(해법) 반복되는 것을 함수화 하는 것은 프로그램의 기본이다.

  함수와 for loop를 활용하여 구구단을 작성 해보면 안될까 생각 된다 ?



1. Shell Script에서 함수 function 선언

 함수의 형식은 다음과 같다. 

  function some_name {

   ..... body .....

  }

  • Shell Script에서 함수 선언 시 주의 할 사항은 

   - 사용하고자 하는 함수는 반드시 스크립트 상단에서 선언이 되어 있어야 사용 가능하다.

   - 함수의 리턴 값이 없다. ( echo 또는 변수를 저장해서 밖에서 쓸 수 있다. : 전역변수)

   - exit 를 사용하면 함수만 종료 하는 것이 아니라 프로그램이 종료 한다. (사용하면 안됨)


2. for 문장 사용하기 (고수되기)*

  for 문장은 bash  shell 에서 흔히 볼 수 있는 일반적인 유형과  잘 알려지지 않은 C 스타일의 유형 두가지를 소개 한다.


  # CASE 1 : bash shell에서 많이 사용하는 리스트 를 활용한 for 문

      range="2 3 4 5 6 78 8 9"

      for i in $range

      do

                 .....

      done


 # CASE 2  : C 언어의 형식을 활용한 for 문

   for (( i=2; i<10;i++ ))

   do

         .....

   done


일단 위의 함수 선언과 for 문을 이용하는 방법을 활용해서 아래와 같은 shell script를 만들어 보았다.

셀스크립트는 사람마다 특색있게 만드는 것이라 정답이라는 것은 없다는 거

다만 반복을 줄이고 간편하고 쉽게 작성을 하는 간결함이 고수와 초수의 차이점이라는 것 이다.


  • [답안 예시]    


#!/bin/bash


##[function] declare function section #######

function fn_multi {

    a="$1"

    b="$2"

        if [ -z "$2" ]

    then

        b=0;

    fi

    if [ -z "$1" ]

    then

        a=0;

    fi

    c=$(( $a * $b ));

    echo " $a x $b = $c"

}

##[Main] Main loop section ##########

v_st=2;

v_en=9;

for (( i=$v_st; i<= $v_end ; i++ ))

do

     for (( j=$v_st; j<= $v_end ; j++ ))

     do

           fn_multi  $i $j

        # echo -n $c

     done

done


728x90
반응형