쉘 스크립트 과정 정리

 

 

 

 

 

1. 선수 지식

 

명령어(grep, sed, awk + head, tail, sort, cut, ....)

* grep CMD

* sed CMD

# sed [-n] '1,3p' file1

# sed [-n] '/root/p' file1

 

# sed -n '3p' /etc/hosts

# sed '1,3d' /etc/passwd

# sed 's/root/ROOT' /etc/group

* awk CMD

# awk '/root/' file1

# awk '{print $1, $2}' file1

# awk '/root/ {print $1, $2}' file1

 

# awk -F: '$3 >= 1000 && $3 <= 60000 {print $1}' /etc/passwd

# df -h / | tail -1 | awk '{print $5}' | sed 's/.$//'

# ifconfig ens33 | grep broadcast | awk '{print $5}' | awk -F. '{print $4}'

# ps -elf | awk '$2 == "Z" {print $0}'

 

+

 

* sort CMD + uniq CMD

# df -k

# du -sk /var

# cd /var ; du -sk * | sort -nr | more

 

# sort -u file1

# sort file1 | uniq -d

# sort file1 | uniq -u

* cut CMD

(주의) 필드 구분자 : 탭

# cut -c1-5 file1

# cut -d ":" -f 1 /etc/passwd

#

* tr CMD

# cat file1 | tr "[A-Z]" "[a-z]"

# cat file1 | tr "[a-z]" "[A-Z]"

* split CMD

# split -d -l 4 file1

* paste CMD

# paste file1 file2

* head CMD

* tail CMD

* wc CMD

 

 

 

 

쉘특성(리다이렉션, 파이프, 메타캐릭터, 엘리어스, 변수, 함수, 환경파일, ...)

* 리다이렉션(Redirection)

* 입력 리다이렉션

* 출력 리다이렉션

* 에러 리다이렉션

* 파이프(pipe)

* 쉘 기능(shell function)

* 변수(Variable)

지역변수

환경변수

특수변수

* 메타캐릭터(Metacharacter)

'', "", ``, \, ;

* 엘리어스(Alias)

* 함수(Function)

# fun () { CMD; CMD; CMD; }

# fun

# typeset -f

# unset -f fun

* 환경파일

* cat CMD + here documentation(<<)

* groupping(())

# (ls; date; cal) > cmd.log

* 조건부 실행

# [ -f /etc/passwd ] && echo "[ OK ]"

# [ -f /etc/passwd ] && echo "[ OK ]" || echo "[FAIL]"

* dirname CMD/basename CMD

# dirname /etc/sysconfig/network-scripts/ifcfg-ens33

# basename /etc/sysconfig/network-scripts/ifcfg-ens33

* eval CMD

"./cmd.sh -i IP -p PORT -t 4 ....."

CMD1="./cmd.sh "

CMD2="-i IP -p PORT "

CMD3="-t 4 ....."

eval $CMD1$CMD2$CMD3$CMD4

 

 

 

 

 

2. 쉘 스크립트

 

 

쉘 스크립트 생성 및 실행 방법

# vi test.sh ; bash -x test.sh

# vi test.sh ; . test.sh

# vi test.sh ; chmod 755 test.sh ; ./test.sh

# vi test.sh ; chmod 755 test.sh ; ./test.sh

매직넘버(#!/bin/bash)

 

 

 

주석

* 한 줄 => #

* 여러 줄 => : << EOF ~ EOF

 

 

 

입력 & 출력

* 입력(read CMD)

* 출력(echo CMD, printf CMD)

 

 

 

산술연산

* expr 4 + 2

* expr 4 - 2

* expr 4 \* 2

* expr 4 / 2

* expr 4 % 2

 

 

 

조건문

1. if 구문

if 조건 ; then

statement

elif 조건 ; then

statement

else

statement

fi

 

 

 

2. case 구문

case VAR in

var1|var2) statement1 ;;

var3|var4) statement2 ;;

*) statement3 ;;

esac

반복문

* for 구문

for VAR in 변수목록

do

statement

done

 

 

 

3. while 구문

while 조건

do

statement

done

* 반복문 제어

break

continue

 

 

 

 

 

3. 쉘 스크립트 프로그램 작성

 

* 로그 모니터링 프로그램 제작

* 리눅스 OS 초기 설정 확인 방법

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

+ Recent posts