■ 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
'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 |