본문 바로가기

Learning/└◆Shell Scripts

셸 스크립트 작성[실무편]-상

 

 

여러가지 실무활용 셀 프로그래밍

다음에 나오는 예제들은 실무적인 쉘프로그래밍을 하기 위한 기초적인 개념을 파악하고 활용할 수 있도록 구성이 되었다. 쉘프로그램 전체 내용 중 중점이 되는 부분에 관해 이해해 보자.

 

아래 내용들은 실무에서 실제 관리자들에 의해 요청된 사항들을 분석하여 제 작성된것이 많다. 실무에 바로 적용할 수 있지는 않지만 적절하게 변경하여 사용하기에 충분하도록 작성이 되어져 있다.

 

 

1. 디렉토리 추가 스크립트

 

/test 디렉토리 밑에 1,2,3,4 디렉토리가 존재하고 각 폴더 하위에 1,2,3,4폴더가

또 존재하도록 구성

 

(1) 1st study

디렉토리 안에 디렉토리를 생성하는 경우 for문(반복문) 2개 필요

 

#!/bin/bash

 

for DIR1 in 1 2 3 4

do

    mkdir -p /test/$DIR1

    for DIR2 in 1 2 3 4

    do

        mkdir /test/$DIR1 $DIR2 

    done

done

 

 

 

2. 계산기 프로그램(3가지 종류)

 

(1). 1st study

echo -n "Enter your choice : "

read choice

 

echo $choice

(2). 2nd study

read A

read B

SUM=`expr $A + $B`

(3). 3st study

if [     ]  ; then

statement

else

statement

fi

(4). 4st study

변수에 값을 입력하는 방식

  1. 직접선언 A=10
    # Variable="Hello Test"
  2. read 명령어로 선언 read A
    # echo -n "Enter your name?"
    # read NAME
  3. 반복문에서 입력으로 받는 방식 for VAR in 1 2 3 4
    # for VAR in 1 2 3 4
    do
    echo $VAR
    done
  4. 기타 $1, $2 -> # script.sh A B
    # expr 1 + 2
    # expr 2 - 1
    # expr 3 \* 3
    # expr 10 / 3
    # expr 20 % 3

[EX1] 두 개의 숫자를 입력 받고 한 개의 연산자를 선택할 수 있도록 계산하는 방식.

#!/bin/bash 

 

echo -n "Enter A : "

read A

 

echo -n "Enter B : "

read B

 

cat << EOF

=======================

(1) +      (2) -      (3)  *      (4)  /

=======================

EOF

echo -n "Enter your choice ? : "

read C

 

case $C in

           1) echo -n "$A + $B = `expr $A + $B`" ;;

           2) echo -n "$A - $B = `expr  $A - $B`" ;;

           3) echo -n "$A * $B = `expr  $A \* $B`" ;;

           4) echo -n "$A / $B = `expr  $A / $B`" ;;

           *) echo -n "Enter Retry.. Next time"

              exit 1

esac

 

 

[EX2]한 개의 숫자와 연산자를 입력 받고 또 숫자를 입력받아 계산하는 방식.

#!/bin/ksh

 

echo -n "Enter A : "

read A

 

echo -n "Enter Operator : "

read B

 

echo -n "Enter C : "

read C

 

if [ "$B" = "+" ] ; then

    echo "$A + $C = `expr $A + $C`"

elif [ "$B" = "-" ] ; then

    echo "$A - $C = `expr $A - $C`"

elif [ "$B" = '*' ] ; then

    echo "$A * $C = `expr $A \* $C`"

elif [ "$B" = "/" ] ; then

    echo "$A / $C = `expr $A / $C`"

else

    echo "Error, Try Agin"

    exit 1

fi  

 

 

[참고] case ~ in ~ esac 구문

 

#!/bin/ksh

 

echo -n "Enter A : "

read A

 

echo -n "Enter Operator : "

read B

 

echo -n "Enter C : "

read C

 

case $B in

    '+') echo "$A + $C = `expr $A + $C`" ;;

    '-') echo "$A - $C = `expr $A - $C`" ;;

    '*') echo "$A * $C = `expr $A \* $C`" ;;

    '/') echo "$A / $C = `expr $A / $C`" ;;

    *) echo "Error, Try Again"

        exit 1 ;;

esac

 

 

[EX3] 인자를 3개 받고 첫 번째 인자와 세 번째 인자인 숫자 연산. ./calculator_ver3.sh 1 + 3

#!/bin/ksh

 

if [ $# -ne 3 ] ; then

    echo "Usage : $0 num1 operator num2"

    exit 1

fi

 

echo "==========================================="

echo " CAUTION MUX "

echo " EXAMPLE : $0 3 \* 5 "

echo "==========================================="

echo

 

case $2 in

'+') echo "$1 + $3 = `expr $1 + $3`" ;;

'-') echo "$1 - $3 = `expr $1 - $3`" ;;

'*') echo "$1 * $3 = `expr $1 \* $3`" ;;

'/') echo "$1 / $3 = `expr $1 / $3`" ;;

*) echo "Error, Try Again."

exit 1

esac

 

 

 

 

 

 

 

3. /etc/hosts 파일 생성 프로그램

 

한 관리자가 많은 서버를 관리하는 경우 /etc/hosts 파일 입력 형태 스크립트.

 

(1). 1st study

# cat /etc/hosts

#

 

 

 

 

  1 #!/bin/bash
  2
  3 INT=1
  4
  5 while [ $INT -le 10 ]
  6 do
  7     CNT=1
  8     PERCENT=`expr $INT \* 10`
  9     echo -ne "$PERCENT % |"
 10     while [ $CNT -le $INT ]
 11     do
 12         echo -ne "="
 13         CNT=`expr $CNT + 1`
 14     done
 15     if [ $INT -ne 10 ] ; then
 16         echo -ne ">\r"
 17     else
 18         echo -ne "| complete\n"
 19     fi
 20     INT=`expr $INT + 1`
 21     sleep 1
 22 done
 23