l login echo Hello USER echo Welcome to

  • Slides: 54
Download presentation

시작 파일 예 l . login echo Hello, $USER ! echo Welcome to UNIX

시작 파일 예 l . login echo Hello, $USER ! echo Welcome to UNIX echo -n "Today is "; date set term = vt 100 set path=(. /bin /usr/local/bin) set history = 40 set prompt = '! % ' stty erase ^H l . cshrc alias h history alias dir ls -a. F alias ll ls -l alias m more alias x chmod +x

사전 정의 환경변수(predefined environment variable) 이름 값 $HOME $home $USER $user $TERM $term $PATH

사전 정의 환경변수(predefined environment variable) 이름 값 $HOME $home $USER $user $TERM $term $PATH $path $PWD $cwd $TERMCAP 사용하는 터미널의 특성 $LD_LIBRARY_PATH ld(linkage editor)가 사용하는 라이브러리 경로 리스트 $LOGNAME 쉘 소유자의 로그인 이름 % setenv # 환경 변수 리스트

if 문 l if 문 if (수식) 명령어 l 예 set input = $<

if 문 l if 문 if (수식) 명령어 l 예 set input = $< if ( $input == "yes") echo hello world ! #!/bin/csh # 사용법: wc. csh 파일 # 명령줄 인수 개수를 확인하고 wc 명령 어를 실행한다. if ($#argv != 1) then echo 사용법: $0 파일 exit 1 endif l if-then 문 set file = $argv[1] if (수식) then 명령어리스트 endif wc $file % wc. csh 사용법: wc. csh 파일 % wc. csh cs 1. txt 38 318 2088 cs 1. txt

중첩 조건문: 예 #!/bin/csh % score 1. csh # 사용법: score 1. csh 점수

중첩 조건문: 예 #!/bin/csh % score 1. csh # 사용법: score 1. csh 점수 입력: 85 # 점수에 따라 학점을 결정하여 프린 트한다. B echo -n '점수 입력: ' set score = $< if ($score >= 90) then echo A else if ($score >= 80) then echo B else if ($score >= 70) then echo C else echo 노력 요함 endif

스위치 switch (스트링) case 패턴 1: 명령어리스트 breaksw case 패턴 2: 명령어리스트 breaksw. .

스위치 switch (스트링) case 패턴 1: 명령어리스트 breaksw case 패턴 2: 명령어리스트 breaksw. . . default: 명령어리스트 breaksw endsw #!/bin/csh # 사용법: score 2. csh # 점수에 따라 학점을 결정하여 프린트 echo -n '점수 입력: ' set score = $< @ grade = $score / 10 switch ($grade) case "10" : case "9": echo A breaksw case "8": echo B breaksw case "7": echo C breaksw default: echo 노력 요함 endsw

모든 명령줄 인수 처리 l 모든 명령줄 인수 처리 #!/bin/csh # 사용법: filesize 1.

모든 명령줄 인수 처리 l 모든 명령줄 인수 처리 #!/bin/csh # 사용법: filesize 1. csh 파일* foreach file ($argv). . . end # 대상 파일들의 이름과 크기를 프린트 if ($#argv == 0) then echo 사용법: $0 파일* exit 1 endif echo "파일 이름 크기(바이트)" l 실행 결과 % filesize 1. csh cs 1. txt cs 2. txt 파일 이름 크기(바이트) cs 1. txt 2088 cs 2. txt 1247 foreach file ($argv) if (-f $file) then set fileinfo = `ls -l $file` set size = $fileinfo[5] echo "$file $size" endif end

menu. csh #!/bin/csh # 사용법: menu. csh # 메뉴에 따라 해당 명령어를 실행 echo

menu. csh #!/bin/csh # 사용법: menu. csh # 메뉴에 따라 해당 명령어를 실행 echo 명령어 메뉴 set stop = 0 while ($stop == 0) cat << MENU d : 날짜 시간 l : 현재 디렉터리 내용 w : 사용자 보기 q : 끝냄 MENU echo -n '? ' set reply = $< switch ($reply) case "d" : date breaksw case "l": ls breaksw case "w": who breaksw case "q": set stop = 1 breaksw default: echo 잘못된 선택 endsw end

디버깅 $ csh -vx 스트립트 [명령줄 인수] switch ( $reply ) % csh -v

디버깅 $ csh -vx 스트립트 [명령줄 인수] switch ( $reply ) % csh -v menu. csh date echo 명령어 메뉴 2011년 12월 9일 금요일 오후 04시 14분 18초 명령어 메뉴 breaksw set stop = 0 end while ( $stop == 0 ) echo -n '? ' cat << MENU ? set reply = $< d : 날짜 시간 q l : 현재 디렉터리 내용 switch ( $reply ) w : 사용자 보기 set stop = 1 q : 끝냄 breaksw echo -n '? ' end ? set reply = $< while ( $stop == 0 ) d

shift l shift 명령어 § 명령줄 인수[리스트 변수]의 원소들을 하나씩 왼쪽으로 이동 shift [리스트변수]

shift l shift 명령어 § 명령줄 인수[리스트 변수]의 원소들을 하나씩 왼쪽으로 이동 shift [리스트변수] #!/bin/csh # 사용법: filesize 2. csh 파일* # 대상 파일들의 이름과 크기를 프린트 if ($#argv == 0) then echo 사용법: $0 파일* exit 1 endif echo "파일 이름 크기(바이트)" while ($#argv) set file = $argv[1] if (-f $file) then set fileinfo = `ls -l $file` set size = $fileinfo[5] echo "$file $size" endif shift end

디렉터리 내의 모든 파일 처리: 예 echo $dir: cd $dir foreach file (*) if

디렉터리 내의 모든 파일 처리: 예 echo $dir: cd $dir foreach file (*) if (-f $file) then @ fcount++ else if (-d $file) then @ dcount++ else @ others++ endif end echo 파일: $fcount 디렉터리: $dcount 기타: $others