본문 바로가기

linux

7-4.쉘스크립트_case 문

728x90
반응형

7-4.쉘스크립트_case

"if 문과 유사한 문법인데 특정 스크립트를 실행할 있도록 도와주는 문법"

 

예제:

**준비해야할 스크립트 2가지

1. 두파일의 차이를 확인하는 diff.sh

2. 파일을 검색하는 find_file.sh

 

 

문제178.

아래의 문제144번의 코드를 가지고 아래의 쉘스크립트를 작성하시오

 

$ sh diff.sh

비교할 번째 파일을 입력하세요~ emp.txt

비교할 번째 파일을 입력하세요~ emp3.txt

 

$ vi diff.sh

echo "    "

echo -n "비교할 첫 번째 파일을 입력하세요~"

read emp

echo "    "

echo -n "비교할 두 번째 파일을 입력하세요~"

read emp3

echo "    "

diff $emp $emp3

diff --brief  $emp $emp3

 

 

 

 

 

문제179.

아래의 두개의 스크립트를 이용해서 case 문으로

아래의 두개의 스크립트를 쉽게 실행할 있도록 total.sh 스크립트를 생성하시오

 

문제76번의 find_file.sh 스크립트를 가져온다.

문제76.(점심시간문제)

파일을 검색할 검색하는 쉘스크립트를 아래와 같이 생성하시오

***이거 test100 인가에 만들었음.

 

$sh find_file.sh

 

#!/bin/bash

echo -n "현재 디렉토리 밑에 검색할 파일명을 입력하세요~"

read file

echo -n "depth 어떻게 할까요~"

read dep

find ./ -maxdepth $dep -name $file -print

 

 

현재 디렉토리 밑에 검색할 파일명을 입력하세요~emp.txt

depth는 어떻게 할까요~1

./emp.txt

 

 

**준비해야할 스크립트 2가지

1. 두파일의 차이를 확인하는 diff.sh

2. 파일을 검색하는 find_file.sh

 

echo "  "

echo "1. 두 파일의 차이를 확인하려면 1번을

2. 특정파일을 검색하려면 2번을"

echo "    "

echo -n "번호를 입력하시오~"

read choice

case $choice in

    1)

      /home/oracle/diff.sh ;;

    2)

      /home/oracle/find_file.sh ;;

esac                  #case 거꾸로 써야 종료된다!

 

 

 

[orcl:~]$ sh total.sh

 

1. 두 파일의 차이를 확인하려면 1번을

2. 특정파일을 검색하려면 2번을

번호를 입력하시오~1

total.sh: line 10: /home/oracle/diff.sh: Permission denied

 *권한이 없다고 나온다!!

 

 

[orcl:~]$ chmod ugo+rwx diff.sh

[orcl:~]$ chmod ugo+rwx find_file.sh

 

 

 

[orcl:~]$ sh total.sh

1. 파일의 차이를 확인하려면 1번을

2. 특정파일을 검색하려면 2번을

번호를 입력하시오~1

비교할 첫 번째 파일을 입력하세요~emp.txt

비교할 두 번째 파일을 입력하세요~emp3.txt

 

Files emp.txt and emp3.txt differ

 

***depth 구글링

서버 운영하다보면 디스크 용량이 가득차는 경우가 있는데 어느 디렉토리에서 용량을 많이 사용하고 있는지 궁금할 때가 있다. 이 때 각 디렉토리별 용량을 확인하기 위해 필요한 명령어다.

du -h --max-depth=1

du 명령어의 사용 방법에 대해 다 알기는 힘들지만 위 명령어 한 놈이라도 제대로 사용하자는 마음으로 남긴다. 매번 찾아보기 귀찮다.

명령어의 --max-depth=1 옵션은 1 depth 디렉토리까지 용량을 확인한다는 의미이다. du에 대한 자세한 설명은 인터넷 찾아보면 나온다.

 

 

 

문제180.

겨울왕국 스크립트에서 elsa 찾는 쉘스크립트를 가져와서 아래의

 

$ find_word.sh

 

$ vi find_word.sh

#!/bin/bash

echo -n "스크립트 이름을 입력하세요~"

read file

echo -n "스크립트에서 찾은 단어를 입력하세요~"

read word

echo "             "

find_word=`grep -iow $word $file |  wc -w`

echo $find_word

 

 

 

 

문제181.

위에서 만든 find_word.sh total.sh 3번으로 추가 시키시오

$ sh total.sh

1. 파일의 차이를 확인하려면 1번을

2. 특정 파일을 검색하려면 2번을

3. 찾고자 하는 단어의 갯수를 검색하려면 3번을

 

 $ vi total.sh

 

echo "             "

echo "1. 두 파일의 차이를 확인하려면 1번을

2. 특정파일을 검색하려면 2번을

3. 찾고자 하는 단어의 갯수를 검색하려면 3번을

     "

echo "           "

echo -n "번호를 입력하시오~"

read choice

case $choice in

    1)

      sh /home/oracle/diff.sh ;;

    2)

      sh /home/oracle/find_file.sh ;;

    3)

      sh /home/oracle/find_word.sh ;;

esac

 

 

 

문제182.

scott 으로 접속해서 csv 파일을 생성하는 스크립트를 아래의 이름으로 생성하시오!

 

$vi make_scott_csv.sh

 

#!/bin/bash

echo "★★★★★★★★★★★★"

echo -n "테이블명을 입력하세요 : "

read table

echo "★★★★★★★★★★★★"

echo " "

sqlplus scott/tiger << EOF

set colsep ','

set pagesize 20

set linesize 120

set trimspool on

set sqlprompt ""

set feedback off

set echo off

set underline off

 

spool $table.csv

 

select * from $table;

 

spool off

 

EOF

sh /home/oracle/clean.sh $table.csv

 

 

$sh make_scott.csv.sh

 

 

 

 

 

문제183.

scott hr 자동으로 접속해서 csv 만들 있도록

위의 스크립트를 이용해서 아래의 스크립트를 생성하시오!

 

$ vi make_scott_csv.sh

 

 

#!/bin/bash

echo -n "유저명을 입력하세요~"

read id

echo -n "비밀번호를 입력하세요~"

read password

clear

echo -n "테이블명을 입력하세요~"

read table

echo "                    "

sqlplus $id/$password << EOF

 

set colsep ','

set pagesize 20

set linesize 120

set trimspool on

set sqlprompt ""

set feedback off

set echo off

set underline off

 

spool $table.csv

 

select * from $table;

 

spool off

 

EOF

sh /home/oracle/clean.sh $table.csv

 

 

 

 

[orcl:~]$ mv make_scott_csv.sh make_csv2.sh

이름바꿈!

 

 

 

문제184.

make_csv2.sh total.sh 4번에 추가 시키시오

 

$ sh total.sh

 

echo "             "

echo "1. 두 파일의 차이를 확인하려면 1번을

2. 특정파일을 검색하려면 2번을

3. 찾고자 하는 단어의 갯수를 검색하려면 3번을

4. 오라클 데이터를 csv 로 생성하려면 4번을

     "

echo "           "

echo -n "번호를 입력하시오~"

read choice

case $choice in

    1)

      sh /home/oracle/diff.sh ;;

    2)

      sh /home/oracle/find_file.sh ;;

    3)

      sh /home/oracle/find_word.sh ;;

    4)

      sh /home/oracle/make_csv2.sh ;;

esac

 

 

 

 

 

문제185.

위에서 생성한 emp.csv 에서 이름이 scott 사원의 월급을 출력하는 python 코드를 작성하시오

 

$ vi find_ename.py

 

#-*- coding: utf-8 -*-

name=raw_input("이름을 입력하세요~")

import csv

file=open("/home/oracle/emp2.csv")           # r 안썼는데도 돌아감. 디폴트가 r 라고 추측하심

emp=csv.reader(file)

 

for emp_list in emp:

    if emp_list[1].strip()==name.upper():

        print emp_list[1],emp_list[5]

 

 

[orcl:~]$ python find_ename.py

이름을 입력하세요~scott

SCOTT            3000

 

 

 

문제186.(점심시간문제)

문제 185 파이썬 실행코드를 total.sh 5번에 추가하시오

 

[orcl:~]$ sh total.sh

 

1. 두 파일의 차이를 확인하려면 1번을

2. 특정파일을 검색하려면 2번을

3. 찾고자 하는 단어의 갯수를 검색하려면 3번을

4. 오라클 데이터를 csv 로 생성하려면 4번을

5. emp.csv에서 이름과 월급을 검색하려면 5번을

 

 

번호를 입력하시오~5

이름을 입력하세요~scott

SCOTT            3000

 

 

$ vi total.sh

echo "             "

echo "1. 두 파일의 차이를 확인하려면 1번을

2. 특정파일을 검색하려면 2번을

3. 찾고자 하는 단어의 갯수를 검색하려면 3번을

4. 오라클 데이터를 csv 로 생성하려면 4번을

5. emp.csv에서 이름과 월급을 검색하려면 5번을

     "

echo "           "

echo -n "번호를 입력하시오~"

read choice

case $choice in

    1)

      sh /home/oracle/diff.sh ;;

    2)

      sh /home/oracle/find_file.sh ;;

    3)

      sh /home/oracle/find_word.sh ;;

    4)

      sh /home/oracle/make_csv2.sh ;;

    5)

      python /home/oracle/find_ename.py ;;

esac

 

 

 

 

 

728x90
반응형

'linux' 카테고리의 다른 글

9. 리눅스설치  (0) 2019.04.03
8. 유저생성 및 관리  (0) 2019.04.03
7-3.쉘스크립트_csv생성  (0) 2019.04.03
7-2.쉘스크립트 while문  (1) 2019.04.03
7-1.쉘스크립트 for문  (0) 2019.04.03