쉘 스크립트 반복 실행

Download Report

Transcript 쉘 스크립트 반복 실행

쉘 관리
강명수
[email protected]
리눅스 쉘(shell)

쉘이란?


쉘의 기능



시스템 운영체제와 사용자가 의사 소통을 할 수 있도록 도와주는 인터페
이스용 특수 프로그램.
인터액티브 기능
스크립트 기능
대부분의 유닉스 시스템에서 지원되는 쉘(shell)



2
Burnce shell(AT&T)
C Shell(Berkeley shell)
Korn shell(Bourne shell의 확장)
성결대학교 LINUX 수업 강명수
리눅스 쉘의 종류

리눅스에서 가장 일반적으로 사용되는 쉘




리눅스 버전별 지원하는 쉘


Bourne Again shell(bash)
TC shell(tcsh)
그 외..(z shell)
View /etc/shell
쉘 간의 이동


3
chsh 명령어
chsh –s tcsh
성결대학교 LINUX 수업 강명수
쉘 선택

사용자별 사용 쉘 지정

쉘 확인 및 변경
4
성결대학교 LINUX 수업 강명수
프롬프트 꾸미기

프롬프트는 bash 쉘의 PS1이라는 쉘 변수로 제어된다.

현재 프롬프트 상태 보기

기본 bash 프롬프트 상태 : [root@localhost ~]#



[\u@\h \W]\$
echo $PS1
쉘 변수를 통한 프롬프트 변경
5
성결대학교 LINUX 수업 강명수
프롬프트에 사용되는 이스케이프 문자
6
\d
“요일 달 날짜” 형식의 날짜 표시 (예 : “Tue May 26”)
\h
첫 번째 “.” 까지의 hostname
\H
hostname
\s
쉘의 이름, $0 의 basename (마지막 slash의 다음에 따라오는 부분)
\t
24-시간으로 현재 시각, HH:MM:SS(시:분:초) 형식
\T
12-시간으로 현재 시각, HH:MM:SS(시:분:초) 형식
\@
12-시간으로 현재 시각, 오전/오후 형식
\u
현재 사용자의 username
\v
Bash 의 버전(예: 2.00)
\V
Bash의 배포, 버전 + 패치수준 (예: 2.00.0)
\w
현재 작업 디렉토리
\W
현재 작업 디렉토리의 bashname
\!
현재 명령어의 history 번호
\#
현재 명령어의 command 번호
\$
유효한 UID가 0이면 “#”를, 그렇지 않으면 “$”를 표시
성결대학교 LINUX 수업 강명수
프롬프트 상태 변경 실습

프롬프트 상태에서 날짜를 표시하기

시간 표시하기

작업 절대 경로 보여주기
7
성결대학교 LINUX 수업 강명수
쉘 환경 변수 (1)

쉘 환경 변수


8
쉘 프로그래밍을 할 경우와 사용자 환경을 설정하는 경우에 사용.
.bashrc_profile 파일을 참조 또는 set 명령어 사용
성결대학교 LINUX 수업 강명수
쉘 환경 변수 (2)
Shell 환경 변수
9
기
능
MANPATH
BASH
매뉴얼이
있는 경로
사용하고
있는 bash
쉘의 경로
OSTYPE
BASH_VERSION
운영체제
Bash
쉘의타입
버전
PATH
COLUMNS
실행 파일의80colums의
검색 경로 값을 갖는다)
터미널의 행수(일반적으로
PWD
ENV
현재 위치(절대적
경로)
환경 지정 파일의 위치(쉘
환경 파일 .bashrc_profile이
있는 경로)
SHELL
HISTFILE
쉘의파일의
경로 경로
히스토리
SHLVL
HISTFILESIZE
쉘의
레벨 사이즈
히스토리
파일의
TERM
HISTSIZE
터미널 종류
히스토리
개수
UID
HOME
사용자
기본
작업UID
영역
USER
HOSTNAME
사용자이름
호스트의
USERNAME
LINES
사용자 라인
이름 수
터미널의
LOGNAME
로그인 이름(사용자 이름)
LS_COLORS
ls 명령어를 사용하였을 경우에 파일의 종류별로 색상을 지정
MAIL
메일을 보관하는 경로
MAILCHECK
메일 확인 시간(단위 초)
성결대학교 LINUX 수업 강명수
쉘 환경 변수 (3)

쉘 환경 변수 설정

사용자의 환경을 설정해 주는 .bash_profile 파일에서 설정.



10
각 사용자별 홈디렉토리(/사용자디렉토리/.bash_profile, /사용자디렉토리/.bashrc)
/etc/profile(시작프로그램과 환경설정), /etc/bashrc(시스템 기능과 aliases)
Export 명령어를 통한 일회성 설정.
성결대학교 LINUX 수업 강명수
쉘 스크립트 작성

쉘 스크립트

도스의 배치 파일의 개념

배치 파일 개념에 덧붙여서 프로그램 기능 추가
11
성결대학교 LINUX 수업 강명수
쉘 스크립트 실습
12
성결대학교 LINUX 수업 강명수
쉘 스크립트 변수 사용

[변수명] = [값]


변수는 숫자 또는 문자 스트링
변수명과 값을 ‘=‘ 기호로 구분하며, 이 사이에는 스페이스가 없어야한다.
A=1
String =”이것은 문자 스트링 예제입니다”
#!/bin/bash
A=1
String=”이것은 문자 스트링 예제입니다.”
echo 프로그램 결과 :
echo $String
echo $A
13
성결대학교 LINUX 수업 강명수
쉘 스크립트 조건 사용 (1)

주어진 조건을 비교하여 결과가 참, 거짓에 따른 실행


If 조건식
조건식
표현 방식
14
참이 되는 경우
[ $A -eq $B ]
A와 B의 값이 같은 경우
[ $A -ne $B ]
A와 B의 값이 다른 경우
[ $A -gt $B ]
A가 B보다 큰 경우
[ $A -lt $B ]
A가 B보다 작은 경우
[ $A -ge $B ]
A가 B보다 크거나 같은 경우
[ $A -le $B ]
A가 B보다 작거나 같은 경우
[ $String1 = $String2
두 문자열이 같은 경우
[ $String1 != $String2 ]
두 문자열이 다른 경우
[ -z “$String” ]
문자열의 길이가 0인 경우
[ -n “$String” ]
문자열의 길이가 0이 아닌 경우
성결대학교 LINUX 수업 강명수
쉘 스크립트 조건 사용 (2)
If [ 조건식 ]
then
[ 조건이 참일 경우 처리할 명령 ]
elif [ 조건식 ]
then
[ 조건이 참일 경우 처리할 명령 ]
else
[ 조건이 거짓일 경우 처리할 명령 ]
fi
#!/bin/bash
A=1
String=”이것은 if문 예제입니다.”
String1=”주어진 값이 0이하입니다.”
String2=”주어진 값이 0이상입니다.”
echo 이것은 스크립트 프로그램 실행 결과입니다.
echo $String
If [ $A -gt 0 ]
then
echo $String2
else
echo $String1
fi
15
성결대학교 LINUX 수업 강명수
쉘 스크립트 반복 실행 (1)

주어진 조건을 비교하여 결과가 참, 거짓에 따른 실행


For 문, while 문, until 문, continue와 break 문, Redirection
for 문
for [ 변수 ] in list1 list2 list3 ….
do
[ 실행될 명령 ]
done
#!/bin/bash
List=’data1 data2 data3 data4 data5 data6'
for Name in $List
do
echo $Name
done
16
성결대학교 LINUX 수업 강명수
쉘 스크립트 반복 실행 (2)
17
성결대학교 LINUX 수업 강명수
쉘 스크립트 반복 실행 (3)

주어진 조건을 비교하여 결과가 참, 거짓에 따른 실행

while 문
while [ 조건문 ]
do
[ 실행될 명령어 ]
done
#!/bin/bash
echo “숫자 10를 입력해 보세요!”
echo “무한 루프에 빠지는 예제입니다.”
read key
echo “지금 입력한 숫자는 $key입니다.”
while [ $key = 10 ]
do
echo “무한 루프입니다.”
echo “끝내려면 crtl-c키를 누릅니다.”
sleep 1
done
18
성결대학교 LINUX 수업 강명수
쉘 스크립트 반복 실행 (4)

주어진 조건을 비교하여 결과가 참, 거짓에 따른 실행

until 문
until [ 조건문 ]
do
[ 실행될 명령어 ]
done
#!/bin/bash
until date | grep “10:12:00”
do
sleep 0
done
echo “아!! 수업이 끝나간당..~~~!”
echo “다음주에는 기말고사당..잼..있겠당..!!”
19
성결대학교 LINUX 수업 강명수
쉘 스크립트 반복 실행 (5)

주어진 조건을 비교하여 결과가 참, 거짓에 따른 실행

continue와 break 문
#!/bin/bash
while :
do
echo “Xbox를 개조하여 리눅스를 설치했어?”
echo “[예/아니오]”
read key
echo “”
if [ “$key” = “아니오” ]
then
echo “$key가 뭐야?.... 다시 물어 보겠어?”
echo “”
continue
else
echo “우와…. Xbox에서 리눅스가 동작하네”
echo “”
break
fi
done
20
성결대학교 LINUX 수업 강명수
쉘 스크립트 반복 실행 (6)

Redirection(리다이렉션)
기 호
명령 > 파일명
미
명령이 실행된 표준 출력의 결과를 파일로 출력합니다.
명령 >> 파일명
명령이 실행된 표준 출력의 결과를 파일에 덧붙여 출력합니다.
명령 < 파일명
파일로부터 읽어 들여 명령의 입력으로 사용합니다.
명령 >& 파일명
명령 >>& 파일명
명령이 실행된 표준 출력의 결과와 에러를 파일로 출력합니다.
명령이 실행된 표준 출력의 결과와 에러를 파일로 덧붙여 출력합니다.
명령 >! 파일명
파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의
결과를 파일로 출력합니다.
명령 >&! 파일명
파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의
결과와 에러를 파일로 출력합니다.
명령 >>! 파일명
파일의 존재 유무와 상관없이 생성하고 파일에 덧붙여 출력합니다.
명령 >>&! 파일명
파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의
결과와 에러를 파일에 덧붙여 출력합니다.
명령A | 명령B
명령A |& 명령B
21
의
명령 A의 출력을 명령 B의 입력으로 사용하여 실행합니다.
명령 A의 출력과 에러를 명령 B의 입력으로 사용하여 실행합니다.
성결대학교 LINUX 수업 강명수
쉘 스크립트 실습

사용자 계정명을 하나 입력 받는다.

/etc/passwd 파일에서 입력 받은 계정명과 같은 계정
이 있는지 확인

만약 있다면 해당되는 계정의 이름과 UID와 홈디렉토
리, 쉘을 각 라인에 나타나도록 스크립트 프로그램을 작
성하시요.

없다면 없다고 메시지를 나타내시요
22
성결대학교 LINUX 수업 강명수
Q&A
감 사 합 니 다.
23
성결대학교 LINUX 수업 강명수