Microsoft Word - Lab_080104A.docx

Similar documents
10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

Microsoft PowerPoint - 02-Shell-Programming

Microsoft PowerPoint - 게시물2 - unix07.ppt [호환 모드]

Microsoft PowerPoint UNIX Shell.ppt

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

Microsoft PowerPoint UNIX Shell.pptx

Microsoft PowerPoint - chap05-제어문.pptx

Tcl의 문법

1 Shell script What the shell?


Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint 웹 연동 기술.pptx

OCW_C언어 기초

ksh프로그램문법.ppt

슬라이드 1

Adobe Flash 취약점 분석 (CVE )

Microsoft PowerPoint - chap06-2pointer.ppt

삼외구사( 三 畏 九 思 ) 1981년 12월 28일 마산 상덕법단 마산백양진도학생회 회장 김무성 외 29명이 서울 중앙총본부를 방문하였을 때 내려주신 곤수곡인 스승님의 법어 내용입니다. 과거 성인께서 말씀하시길 道 를 가지고 있는 사람과 어울려야만 道 를 배울 수 있

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - e pptx

Content Shell 이란? Redirection & Pipes Shell Programming 변수 조건 프로그램제어 리스트 함수 Shell 에내장된명령 Here documents Page 2

2힉년미술

Microsoft PowerPoint - chap04-연산자.pptx

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

Linux SHELL

[ 컴퓨터시스템 ] 3 주차 1 차시. 디렉토리사이의이동 3 주차 1 차시디렉토리사이의이동 학습목표 1. pwd 명령을사용하여현재디렉토리를확인할수있다. 2. cd 명령을사용하여다른디렉토리로이동할수있다. 3. ls 명령을사용하여디렉토리내의파일목록을옵션에따라다양하게확인할수

01Report_210-4.hwp

<C3D1BCB15FC0CCC8C45FBFECB8AE5FB1B3C0B0C0C75FB9E6C7E D352D32315FC5E4292E687770>



교육 과 학기 술부 고 시 제 호 초 중등교육법 제23조 제2항에 의거하여 초 중등학교 교육과정을 다음과 같이 고시합니다. 2011년 8월 9일 교육과학기술부장관 1. 초 중등학교 교육과정 총론은 별책 1 과 같습니다. 2. 초등학교 교육과정은 별책

시험지 출제 양식

177

제주어 교육자료(중등)-작업.hwp

¸é¸ñ¼Ò½ÄÁö 63È£_³»Áö ÃÖÁ¾

<C3D6C1BE5FBBF5B1B9BEEEBBFDC8B0B0DCBFEFC8A C3D6C1BEBABB292E687770>

초등국어에서 관용표현 지도 방안 연구

6±Ç¸ñÂ÷

우리나라의 전통문화에는 무엇이 있는지 알아봅시다. 우리나라의 전통문화를 체험합시다. 우리나라의 전통문화를 소중히 여기는 마음을 가집시다. 5. 우리 옷 한복의 특징 자료 3 참고 남자와 여자가 입는 한복의 종류 가 달랐다는 것을 알려 준다. 85쪽 문제 8, 9 자료

상품 전단지

::: 해당사항이 없을 경우 무 표시하시기 바랍니다. 검토항목 검 토 여 부 ( 표시) 시 민 : 유 ( ) 무 시 민 참 여 고 려 사 항 이 해 당 사 자 : 유 ( ) 무 전 문 가 : 유 ( ) 무 옴 브 즈 만 : 유 ( ) 무 법 령 규 정 : 교통 환경 재

2

DBPIA-NURIMEDIA

화이련(華以戀) hwp

ÆòÈ�´©¸® 94È£ ³»Áö_ÃÖÁ¾

歯1##01.PDF

<5BC1F8C7E0C1DF2D31B1C75D2DBCF6C1A4BABB2E687770>

120229(00)(1~3).indd

과 위 가 오는 경우에는 앞말 받침을 대표음으로 바꾼 [다가페]와 [흐귀 에]가 올바른 발음이 [안자서], [할튼], [업쓰므로], [절믐] 풀이 자음으로 끝나는 말인 앉- 과 핥-, 없-, 젊- 에 각각 모음으로 시작하는 형식형태소인 -아서, -은, -으므로, -음

민주장정-노동운동(분권).indd

<C0CEBCE2BABB2D33C2F7BCF6C1A420B1B9BFAAC3D1BCAD203130B1C72E687770>


untitled

E1-정답및풀이(1~24)ok

<C1B6BCB1B4EBBCBCBDC3B1E2342DC3D6C1BE2E687770>

최우석.hwp

교사용지도서_쓰기.hwp

時 習 說 ) 5), 원호설( 元 昊 說 ) 6) 등이 있다. 7) 이 가운데 임제설에 동의하는바, 상세한 논의는 황패강의 논의로 미루나 그의 논의에 논거로서 빠져 있는 부분을 보강하여 임제설에 대한 변증( 辨 證 )을 덧붙이고자 한다. 우선, 다음의 인용문을 보도록

< BDC3BAB8C1A4B1D4C6C75BC8A3BFDC D2E687770>

cls46-06(심우영).hwp

伐)이라고 하였는데, 라자(羅字)는 나자(那字)로 쓰기도 하고 야자(耶字)로 쓰기도 한다. 또 서벌(徐伐)이라고도 한다. 세속에서 경자(京字)를 새겨 서벌(徐伐)이라고 한다. 이 때문에 또 사라(斯羅)라고 하기도 하고, 또 사로(斯盧)라고 하기도 한다. 재위 기간은 6

0429bodo.hwp

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

금오공대 컴퓨터공학전공 강의자료

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

강의 개요

Secure Programming Lecture1 : Introduction

윈도우즈프로그래밍(1)

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

Infinity(∞) Strategy

<3235B0AD20BCF6BFADC0C720B1D8C7D120C2FC20B0C5C1FE20322E687770>

PowerPoint 프레젠테이션

Microsoft PowerPoint 세션.ppt

제1장 Unix란 무엇인가?

untitled

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft Word - 1. ARM Assembly 실습_xp2.doc

Visual Basic 반복문

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

09. 정덕배-중국생활체험기.hwp

PowerPoint 프레젠테이션

DIY 챗봇 - LangCon

장: 200 세외수입 관: 210 경상적세외수입 항: 213 수수료수입 (단위:천원) [ 일반회계 ] 1,405,842 1,399,860 5,982 < 청소행정과 > 1,028,442 1,022,460 5,982 사업장종량제봉투 제작비용(30L) 79.43원*30,00

Modern Javascript

DocsPin_Korean.pages

Java ...

MySQL-Ch10

USER GUIDE

<4D F736F F F696E74202D20BFEEBFB5C3BCC1A6BDC7BDC D31C7D0B1E229202D20BDA92E BC8A3C8AF20B8F0B5E55D>


4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint 자바스크립트(1).pptx

Microsoft PowerPoint - Java7.pptx

슬라이드 1

Microsoft PowerPoint - System Programming Lab Week1.ppt [호환 모드]

PowerPoint 프레젠테이션

Microsoft PowerPoint Predicates and Quantifiers.ppt

PowerPoint Presentation

Transcription:

BASH Shell Script 3rd Lab 1. 쉘스크립트 간단한쉘스크립트 $ vi hello.sh (hello.sh) echo hello world $ chmod 755 hello.sh $./hello.sh hello world #! 은쉘에게이프로그램을실행하기위해서 #! 다음에오는아규먼트를실행프로그램으로사용한다는것을알려주기위해서사용된다. Unix/Linux system 은 Winws 와달리파일의확장자명 (.exe.com 등 ) 으로실행파일유무를결정하지않으며, 파일권한설정의변경을통하여실행파일로결정한다. 따라서스크립트파일을실행하기위해서는파일에실행권한을주어야한다. 2. 주석 "#" 에서부터라인의마지막까지가주석으로처리된다. # 만든이 : comp-ta # 하는일 : hello world 를출력한다. echo "hello world" # 문자열을출력한다. 3. 변수 C 언어와같은변수선언을필요로하지않는다. 기본적으로데이터를 string( 문자열 ) 로저장한다.( 수치를대입해도실제수치가아닌문자열이저장된다.) 따라서타입이없고아무값이나저장할수있다. 변수의값을사용할때는변수명앞에 "$" 를붙여서사용하고, 값을대입할때는 "$" 를붙이지않는다. 변수에데이타를저장하기위해서는대입연산자 "=" 를사용한다. 대입연산자와, 피연산자 / 연산자사이에는공백이존재하면안된다. varname=value 1

산술연산 : 모든것이문자열로저장되기때문에산술연산을하기위해서는변수 =$(( 산술식 )) 과같이사용. a=1 b=2 c=$(($a+$b)) echo $c (3 출력 ) 4. 명령행인자 (argument) $1~ $n - 넘겨진인자들 $* - 스크립트에전달된인자들을모아놓은문자열. 하나의변수에저장되며 IFS 환경변수의첫번째문자로구분된다. (IFS : internal eld separator) $@ - $* 과같다. 다만구분자가 IFS 변수의영향을받지않는다. $0 - 실행된쉘스크립트이름 $# - 스크립트에넘겨진인자의갯수 (test1.sh) echo "This Script Executable File : $0" echo "Argument Count : $#" echo "Argument List \$* : $*" echo "Argument List \$@ : $@" echo "Argument 1 : $1" echo "Argument 2 : $2" echo "Argument 3 : $3" echo "Argument 4 : $4" ( 실행 ) $chmod 755 test1.sh $./test1.sh a1 a2 a3 a4 This Script Executable File :./test1.sh Argument Count : 4 Argument List $* : a1 a2 a3 a4 Argument List $@ : a1 a2 a3 a4 Argument 1 : a1 Argument 2 : a2 Argument 3 : a3 Argument 4 : a4 5. 제어구조 if / 조건을 test 하여참이면 부분을, 거짓이면 부분을실행. test 조건들은 "[ ]" 사이에쓰면된다. "[" 과 "]" 사이에는반드시공백문자가들어가야한다. 변수값, 파일특징, 명령의실행여부등다양한 test 조건이있다. 2

if condition statements [elif condition statements...] [ statements] if [ $1 -lt $2 ] echo $1 is less than $2 elif [ $1 -gt $2 ] echo $1 is greater than $2 echo $1 equals to $2 - 참고 : test 명령조건문자열비교 [ string ] - string 이빈문자열이아니라면참 [ string1 = string2 ] - 두문자열이같다면참 [ string1!= string2 ] - 두문자열이다르면참 [ -n string ] - 문자열이 null( 빈문자열 ) 이아니라면참 [ -z string ] - 문자열이 null( 빈문자열 ) 이라면참산술비교 [ expr1 -eq expr2 ] - 두표현식값이같다면참 ('EQual') [ expr1 -ne expr2 ] - 두표현식값이같지않다면참 ('Not Equal') [ expr1 -gt expr2 ] - expr1 > expr2 이면참 ('Greater Than') [ expr1 -ge expr2 ] - expr1 >= expr2 이면참 ('Greater Equal') [ expr1 -lt expr2 ] - expr1 < expr2 이면참 ('Less Than') [ expr1 -le expr2 ] - expr1 <= expr2 이면참 ('Less Equal') [! expr ] - expr 이참이면거짓, 거짓이면참 [ expr1 -a expr2 ] - expr1 AND expr2 의결과 ( 둘다참이면참, 'And') [ expr1 -o expr2 ] - expr1 OR expr2 의결과 ( 둘중하나만참이면참, 'Or') 파일조건 [ -b FILE ] - FILE 이블럭디바이스이면참 [ -c FILE ] - FILE 이문자디바이스이면참. [ -d FILE ] - FILE 이디렉토리이면참 [ -e FILE ] - FILE 이존재하면참 [ -f FILE ] - FILE 이존재하고정규파일이면참 [ -g FILE ] - FILE 이 set-group-id 파일이면참 [ -h FILE ] - FILE 이심볼릭링크이면참 [ -L FILE ] - FILE 이심볼릭링크이면참 [ -k FILE ] - FILE 이 Sticky bit 가셋팅되어있으면참 [ -p FILE ] - True if le is a named pipe. [ -r FILE ] - 현재사용자가읽을수있는파일이면참 [ -s FILE ] - 파일이비어있지않으면참 [ -S FILE ] - 소켓디바이스이면참 [ -t FD ] - FD 가열려진터미널이면참 [ -u FILE ] - FILE 이 set-user-id 파일이면참 [ -w FILE ] - 현재사용자가쓸수있는파일 (writable le) 이면참 [ -x FILE ] - 현재사용자가실행할수있는파일 (Executable le) 이면참 [ -O FILE ] - FILE 의소유자가현재사용자이면참 [ -G FILE ] - FILE 의그룹이현재사용자의그룹과같으면참 3

[ FILE1 -nt FILE2 ] - : FILE1 이 FILE2 보다새로운파일이면 ( 최근파일이면 ) 참 [ FILE1 -ot FILE2 ] - : FILE1 이 FILE2 보다오래된파일이면참 [ FILE1 -ef FILE2 ] - : FILE1 이 FILE2 의하드링크파일이면참 for 지정된범위안에서루프를수행한다. 범위는어떤집합도가능하다. (Bash 2.03 버전이후버전 ) C style 의 for loop 사용가능 - 아래 3 문장은모두같은의미이다 - for a in 1 2 3 4 5 6 7 8 9 10 for a in $(seq 1 10) for ((a=0;a<10;a++)) 범위가하나의 string 이라면 IFS 를이용해구분가능. [in list] 를생략한다면기본값은 $@ for name [in list] statements that can use $name. ne IFS=: for dir in $PATH ls ld $dir ne while 어떤조건이참인동안코드를반복 while condition statements... ne count=0 while [ $count -lt 10 ] echo $count count=$(($count+1)) ne until 어떤조건이참일때까지 ( 거짓인동안 ) 반복 until condition statements... ne count=0 until [ $count -gt 10 ] echo $count count=$(($count+1)) ne case C 의 switch 구문과비슷한역할을함 C 의 switch 구문은정수나문자같은단순한값을검사하는반면, Bash 의 case 는 4

와일드카드 (?, *) 사용이허락되는어떤패턴을놓고문자열을검사 case expression in pattern1 ) statements ;; pattern2 ) statements ;;... esac case $1 in *.jpg ) echo jpg: Graphic File!! ;; *.txt ) echo txt: Text File!! ;; * ) echo Unknown File!! ;; esac select Korn Shell, Bash Shell 에만존재 간단한메뉴를제공 select 의루프내에서는자동적으로루프를벗어날수없기때문에반드시 break 문등을사용해서루프를벗어나야한다. prompt string 을변경하기위해서는쉘변수 PS3 를이용. select name [in list]; statements that can use $name...... ne echo " 다음중 scripting language 에속하는것은?" PS3= 숫자를선택하세요 : select var in "Bash script" "C/C++ "Java "Exit" if [ "$var" = "Bash script" ] echo " 정답입니다." break elif [ "$var" = "Exit" ] echo " 종료합니다." exit 1 echo "$var 을선택하셨습니다. 오답입니다." echo " 다음중 scripting language 에속하는것은?" ne cf.) read : 직접사용자입력을받음. 5

echo 이름을입력해주세요 : read NAME echo "Hi $NAME!" 6. Quoting Single Quotes Single Quotes 안의모든특수문자를보통문자로취급 Single Quotes 안에또다른 Single Quote 를쓸수없음 $ echo 2 * 3 > 5 is a valid inequality. (X) $ echo '2 * 3 > 5 is a valid inequality. (O) $ echo Hatter's tea party (X) $ echo Hatter\'s tea party (O) $ echo 'Hatter'\''s tea party' (O) Double Quotes Weak Single Quotes Single Quotes 와달리 $, `(backquote), ( 이스케이프 ) 는처리 문자열안에서다음을참조할때사용 - 변수확장 : $varname - 명령 : $(command) 혹은 `command` -single quote 가아니라 backquote 임. - 산술연산구문 : $((1+1)) $ echo "2 * 3 > 5 is a valid inequality." $ echo "Hatter\'s tea party" $ echo "path=$path" $ echo "current directory=$(pwd)" $ echo "current directory=`pwd`" $ echo "1 + 1 = $((1+1))" 7. 함수 다른프로그램언어에서와같이코드를재사용하거나모듈화를위해함수를사용 함수는함수가불리기전에정의되어야한다. (C 처럼함수를미리선언하는방법은없음 ) parameter : 함수는자신에게넘어온인자를 $1, $2 와같이인자의위치로참조한다. return value : 함수는반드시정수값만리턴할수있다. 이리턴값은 $? 변수에저장된다. 6

add() { } result=$(($1+$2)) return $result a=3 b=5 add $a $b sum=$? echo "$a + $b = $sum" 8. Backup script code if [ -z $1 ] [ -z $2 ]; echo usage: $0 source_dir target_dir SRC_DIR=$1 DST_DIR=$2 OF=output.$(date +%y%m%d%h%m%s).tar.gz if [ -d $DST_DIR ]; tar -cvzf $DST_DIR/$OF $SRC_DIR mkdir $DST_DIR tar -cvzf $DST_DIR/$OF $SRC_DIR 9. 참고자료 - http://wiki.kldp.org/wiki.php/%c0%c0%bf%eb%c7%c1%b7%ce%b1%d7%b7% A5#s-1.1 7