주성식 / liks@doit.ajou.ac.kr
|
|||||||||||||||||||||||||||||||||||||||||||||||||
리눅스에서의 프로그래밍 환경 리눅스에서는 MS의 도스 시절부터 지금의 윈도우 기반에서 사용할 수 있는 대부분의 프로그래밍 언어와 유닉스 기반에서 사용할 수 있도록 제작되어진 거의 모든 언어와 툴들을 지원한다. 가장 인기 있는 언어인 ‘C’,’C++’을 완벽히 지원하며(리눅스가 ‘C’로 짜여져 있음을 생각해 보자. ^^;) 선풍적인 인기를 끌고 있는 썬의 자바, 예전에 인기 있던 포트란, 코볼 등도 완벽히 지원한다. 최근 들어서 일상의 일부가 되어 버린 WWW (World Wide Web)의 개발 도구인 ‘perl’ 과 PHP 등의 활약도 리눅스의 도움이 컸으리라 생각한다. 이번 글의 목적은 리눅스에서 사용할 수 있는 프로그래밍 도구들의 간략한 사용법과 여러 프로그래밍 언어들에 대해서 간략히 알아보는 것이다. 처음 부분에는 리눅스에서 사용할 수 있는 각 언어에 대한 컴파일러나 인터프리터, 혹은 프로그래밍 도구의 간략한 사용법에 대해서 다루려 한다. 끝 부분에는 유닉스계열의 운영체제에서 아주 필수적인 쉘(shell) 스크립트에 대해서 알아 보도록 하겠다. 쉘 스크립트는 여러분이 리눅스를 감칠맛 나게 활용할 수 있도록 해줄 것이다. 우리는 이 부분을 간단한 예제를 들어서 쉽게 알아 보도록 하겠다. . 실질적인 각 언어에 대한 프로그래밍은 여러분들의 관심 여하에 따라 좋은 입문서를 선택하여 공부할 수 있을 것이다.
리눅스에서의 ‘C’언어 리눅스와 같은 유닉스 계열 환경에서 ‘C’는 뗄래야 뗄 수 없는 독보적인 존재이다. 또 가장 ‘Popular’한 랭귀지 인데다가 최근에 새로 개발되어 지고 있는 언어들의 모체가 되고 있는 더 이상 말이 필요 없는 기본적인 프로그래밍 언어이다.
‘C’언어를 사용하려면.. 우리가 ‘C’언어를 이용해 프로그램의 소스를 만들면 그것을 사람의 입장이 아닌 기계 입장의 바이너리 코드로 만들어주는 프로그래밍 도구가 필요하다. 리눅스에서의 프로그래밍 개발에는 기본 적으로 컴파일러와 라이브러리 , 헤더 파일 등을 갖추고 있어야 한다. 우리가 리눅스에서 ‘C’언어를 이용해 프로그래밍하기 위해서는 ‘GNU C Library’(glibc-2.1)라는 것이 기본적으로 필요하다. 이 라이브러리는 가장 기본적인 ‘C’라이브러리이다. 또 개발하려는 소프트웨어의 용도에 따라 여러 가지 라이브러리들을 필요로 할 것이다.
‘gcc’사용하기 gcc는 GNU 프로젝트에 의해서 개발되어진 ‘GNU
C Compiler’이다. ‘gcc’는 어떻게 설치해야 할까?! 적어도 리눅스에서
만큼은 ‘gcc’의 설치에 대해서 걱정할 필요는 없다. ‘gcc’는
가장 기본적인 ‘프로그램’ 이기 때문에 필수적으로 설치되기 때문이다.
만약의 경우 ‘gcc’를 설치해야 한다면 ‘http://www.gnu.org’ 등에서
다운로드 받을 수 있다.
우리는 위와 같은 소스 코드를 ‘vi’ 에디터나
‘cat’명령어와 리다이렉션 기호를 이용하여 만들 수 있을 것이다.
파일 이름은 ‘hello.c’라고 하자. 확장자가 ‘.c’가 아니면 gcc는
‘C’언어 소스 코드임을 인식하지 못한다. 소스 코드를 컴파일
해보도록 하자.
gcc [소스코드파일이름]을 실행하면 다음과 같이
기본적으로 ‘a.out’이라는 실행코드를 생성하게 되는데 우리가
원하는 파일이름을 얻기 위해서는 다음과 같이 ‘-o’ 옵션을 줄
수 있다. ‘gcc -o hello hello.c’ ‘o’옵션은 주어진 이름으로
실행 파일을 생성하라는 ‘Place the output into <file>’의
의미를 가지고 있다.
프로그램을 제작할 때 컴파일을 하고 소스를 관리하는데 편의를 두기 위해 ‘make’, ‘Makefile’ 등의 유틸리티와 CVS등의 프로그램들을 사용한다. 전문 개발자가 아니라면 이러한 부분까지는 신경쓰지 않아도 된다.
리눅스에서 자바를 사용해 보자. 자바에 대한 소개 : 자바는 ‘SUN Micro Systems’에서 개발되어진 컴퓨터 언어이다. 초기에는 가전 제품에 사용되어질 목적으로 설계되었으나 자바 가상 머신을 이용하여 멀티 플랫폼에서 같은 모습으로 동작하는 것이 가능하게 되었다. 어느 곳에서든지 한번 작성하게 되면 다른 포팅과 같은 과정을 거치지 않고 곧바로 실행할 수 있다는 것은 자바의 가장 강력한 기능이다. 모든 것이 완벽한 객체지향으로 설계되어졌고 인터넷에 가장 잘 맞는 언어이다. JAVA를 위해 JDK를 설치하고 사용해 보자. 우선 자바를 이용하기 위해서는 ‘JDK(Java Development Kit)’를 설치하여야 한다. ‘JDK’의 최신 버전을 구할 수 있는 곳은 ‘http://www.blackdown.org’이다. 이 곳에 접속하여 가까운 미러 사이트를 선택해서 JDK를 다운로드 받도록 하자. 현재 JDK의 가장 최신 버전은 1.2.2이다. 다음의 미러 사이트에서 ‘ftp://ftp.lab.kdd.co.jp/Linux/java-linux/JDK-1.2.2/i386/rc4/’
JDK1.2.2를 설치하기 일단 ‘su’를 사용해 루트 권한을 얻은 후 ‘jdk-1.2.2-RC4-linux-i386-glibc-2.1.2.sh’ 파일을 /usr/local/ 디렉토리에 카피한다. 카피한 후 다음과 같은 절차로 인스톨 한다. % cd /usr/local 이제는 이곳에 ‘jdk-debug-1.2.2-RC4-linux-i386-glibc-2.1.2.sh’가 자동 압축 풀림으로 설치가 된다. 설치가 완료되면 ‘JDK’를 사용하기 위해서 /etc/profile등에 ‘JDK’의 실행 경로를 패스에 잡아 주어야 한다. 다음과 같은 내용을 끝 부분에 삽입 시켜 주자. ‘export PATH=$PATH:/usr/local/jdk1.2.2/bin’
vi 에디터 등을 이용하여 ‘HelloWorld.java’라는
이름으로 저장하도록 하자. 우선 우리는 이 소스 파일을 자바 가상머신에서
동작할 수 있는 바이너리로 코드로 만들어 주어야 한다. ‘% javac HelloWorld.java’ 아무이상 없이 프롬프트가 떨어 졌다면 컴파일이 성공적으로 끝난 것이다. ‘ls -l’ 명령어를 사용하여 확인하여 보면 ‘HelloWorld.class’파일이 생성되었음을 알 수 있다. 프로그램의 실행 결과를 보기 위해 자바 인터프리터를 이용하여 다음과 같이 확인할 수 있다. ‘% java HelloWorld’ JDK1.2.2가 성공적으로 설치하고 프로그래밍할 수 있는 환경을 만들어 보았다.
Jbuilder 설치하여 사용해 보기 볼랜드(Borland)의 ‘Jbuilder’는 자바를 위한
최고의 툴이라고 불리워지는 개발 툴이다. 컴포넌트 기반의 프로그래밍 강력한 디버깅 기능 코드 브라우징 기능 멀티 컴포넌트 라이브러리 ‘Jbuilder’에 대한 언급은 이 정도에서 끝내기로 하고 리눅스용 ‘Jbuilder’의 라이센스를 등록하고 설치하여 사용하는 방법을 알아 보도록 하자. 리눅스에서는 사용자 등록만 하면 무료로 다운로드하여 사용할 수 있도록 배포되고 있다.
‘Jbuilder’를 구할 수 있는 곳은? ‘http://www.borland.com/jbuilder/linux/’에서 리눅스용 ‘Jbuilder’에 대한 정보를 얻을 수 있다. 리눅스용 ‘Jbuilder’의 권장 사항은 다음과 같다. 리눅스용 ‘Jbuilder’를 다운로드 받기 위한
URL은 다음과 같다.
‘Jbuilder’를 설치하기 ’JBuilder’를 설치하기 전에 우선 볼랜드 홈페이지에서
‘Activation Key’를 얻어야 한다. ‘Jbuilder’를 설치할 때 필요하니 메모를 해두거나 파일로 저장해 두기 바란다. (인스톨레이션 키와 시리얼 키를 얻은 화면) Activation 키를 얻었다면 다음과 같이 실행한다.
’JDK’가 설치된 디렉토리를 물어 보는데 자신의 시스템에 맞게 선택하여 주면 라이센스 키를 묻는 화면이 나온다. 사용자 이름과 라이센스 키를 등록 시키면 Jbuilder와의 첫 대면을 할 수 있을 것이다.
<Jbuilder의 작업화면> 볼랜드는 MS의 비주얼 베이직과 컴포넌트 프로그래밍 툴의 양대 산맥인 델파이(Delphi)도 곧 리눅스로 포팅하여 발표할 예정이라고 한다. 이제 리눅스에는 전통적인 유닉스 개발 환경과 비주얼한 컴포넌트툴 들을 동시에 갖출 수 있게 되었다. ‘Jbuilder’의 구체적인 사용법에 대해서는 시중에 나와 있는 좋은 입문서들을 참고 하시길..
리눅스에서의 ‘perl’ ‘perl’의 소개 PERL의 장점을 살펴 보면 다음과 같다. 리눅스에서 ‘perl’을 사용하여 간단한 예제를
실행 시켜 보도록 하자.
vi 에디터 등으로 파일을 만든 후 hello.pl 이라고 이름을 붙여 주자. 위의 소스는 정말 간단하지만 완벽한 프로그램이다.
‘hello.pl’을 ‘perl’이라는 인터프리터로
해석하여 실행하라는 의미이다.
‘perl’ 문법의 간단한 소개 변수(VARIABLE) scalar variable. Perl 언어는 변수이름의 앞에 특별한 기호를 붙여 줌으로써 변수의 형태를 구분한다. scalar 변수는 변수명 앞에 $를 붙여서 구분하는데 일반적인 변수라고 볼 수 있다. ‘scalar’라는 말은 대개 ‘실수(實數)로 표시할 수 있는 수량’이란 뜻이다. PERL 에서는 문자열도 스칼라 데이터 타입으로 저장된다. ‘C’언어를 공부하신 분은 당황스러울지도 모르겠지만, 상당히 편리하게 사용할 수 있는 변수형태이다. $num = 1000; 위의 예에서와 같이 숫자를 할당했던 변수에
문자열을 재 할당하여 사용할 수 있다. ‘C’언어를 공부하신 분들은
‘와~!!’ 라는 소리를 지르실지도 모르겠네요.
‘[ ]’ 안에 들어있는 숫자는 배열 안에서의
위치를 나타내는 것으로써 ‘참조번호’라고 부른다. $lastIndex = $#testarray; 위에서처럼 배열의 이름 앞에 $#를 붙이면 배열 @testarray의 맨 마지막 요소의 참조번호(index number)를 알 수 있다. 즉 $lastIndex 또는 $#testarray의 값이 2 라면 배열의 첫 참조번호는 0 이므로 요소의 갯수는 모두 3개인 셈이다. 배열의 크기를 조절할 때에도 다음과 같이 마지막 참조번호를 이용할 수 있다. $#testarray = 2; # 마지막 참조번호를 2로 제한... $testarray[2]는 사라지게 되고 3개의 요소($testarray[0],
$testarray[1], $testarray[2])만 남겨지게 된다. 배열의 크기를
알아내는 방법에는 마지막 참조번호($#testarray)를 보는 것 외에도
배열 이름을 그대로 사용하는 방법이 있다.
위의 예에서는 변수 ‘$last’에 배열 안의 원소의 개수인 ‘4’라는 숫자가 화면에 출력된다. ‘print’함수는 ‘hello.pl’에서도 간단하게
사용해 보았는데 , 좀더 자세히 알아 보도록 합시다.
print 다음에 나오는 <<end_greeting 이라는 것의 의미는 문장을 print하는데 있어서 첫 end_greeting (혹은 또는 사용자가 임의로 정하는 그 무엇, end_hello 이나 asdf_end등) 가 나올 때까지 진행하라는 의미이다. 펄은 사용방법이 쉽고 간단하기 때문에 많이 사용되어 진다. 인터넷이나 각 통신망등에 펄에 대한 강좌가 널리 보급되어 있으므로 여러분들은 쉽게 공부할 수 있을 것이다.
엑스 윈도우에서의 프로그래밍 엑스 윈도우 상에서 프로그래밍을 하기 위해서는 ‘X server’ , ‘X client’ , ‘X protocol’ , ‘X library’ 이들의 관계를 간단하게 표현 하자면 ‘사용자와 상호 대화’,’애플리케이션’,’클라이언트 서버 의 통신’,’프로그래밍 인터페이스’ 로 바꾸어 생각할 있다. 엑스 윈도우는 설계 당시부터 ‘클라이언트 /서버’ 모델로 설계되었다. 과거에는 엑스 윈도우에서의 프로그래밍은 ‘X library’를 통해서 하는 것이 일반적 이었으나 요즘에는 쉽고 간단하게 ‘위젯(widget)’을 만들어주는 라이브러리들이 많이 개발되어져 있다. ‘위젯’이란 GUI 환경에서 사용되어지는 여러 가지 인터페이스 형식들을 말한다. 대화창이라던가 파일을 열고 닫는 메뉴라던가.. 우리는 ‘Tcl/TK’와 ‘GTK+’라이브러리에 대해서 알아 보도록 하겠다.
Tcl/TK ‘Tcl’은 John Ousterhout씨가 개발한 인터프리터
방식의 언어이다. 예제를 통하여 살펴 보도록 하자.
‘perl’에서와 마찬가지로 인터프리터의 경로를
‘#!’와 함께 표시해 준다. ‘-f’옵션은 스크립트를 실행 시킬
때에 상호 대화적 ‘wish’창이 뜨지 않도록 하는 것이다.’button’
부분을 보면 쉽고 간단하게 위젯을 확장시킬 수 있다는 것을 알
수 있다.
(예제의 실행 화면) ‘Tcl/TK’에 대한 부분은 Sun의 홈페이지에서 많은 정보를 구할 수 있고 ‘Tcl/TK’를 이용하여 ‘X 윈도우’ 프로그래밍에 대한 부분을 다룬 책들도 여러 권 나와 있다.(한글 판은 본적이 없네요.) ‘Tcl/TK’를 익힌다면 엑스 윈도우상에서 쉽게 멋진 프로그램들을 구현할 수 있을 것이다.
GTK/Library를 이용한 엑스 윈도우 프로그래밍. 엑스 윈도우 프로그래밍에서는 여러 가지 라이브러리들을
사용할 수 있다. 대표적인 것으로 예전에 많이 사용되었던 ‘motiff’
가 있고 최근에 많이 사용 되어지고 있는 GTK+ , qt 라이브러리
등이 있다. GTK+ 같은 경우는 리눅스 용 ‘포토샵’이라고 불리워지는
GIMP라는 프로그래밍을 개발하던 도중에 여러 가지 위젯들이 모여
지면서 개발되어진 라이브러리이다.
GTK+ 라이브러리를 이용해 ‘Hello World’를 출력해 보도록 하자. ‘Hello GTK+’이라는 버튼을 출력하는 프로그램을
만들어 보자.
위 프로그램을 컴파일하는 방법은 다른 프로그램을
컴파일할 때와는 사뭇 다르다.
‘gtk-config’명령어는 gtk 라이브러리를 사용할
때에 필요한 헤더 파일과 라이브러리의 링크 옵션을 대신 처리해
명령어로써 다음과 같이 실행해 보면 알 수 있다.
컴파일할 때에 사용한 ‘gtk-config --libs’,’gtk-config
--cflags’를 실행해 보자.
GTK는 엑스 윈도우 기반의 프로그램을 만들기 위한 라이브러리이기 때문에 컴파일할 때는 엑스 윈도우상태가 아니어도 상관이 없지만 실행시킬 때에는 반드시 엑스 윈도우 상태이어야 한다. <’hello GTK+’ 실행 화면>
쉘 스크립트에 대해서.. 쉘에 대해서(쉘이 어떤 역할을 하는지)는 앞의 챕터들에서 알아보았다. 운영체제의 핵심 부분인 커널. 그 기반 위에서 사용자와 운영체제를 연결 시켜주는 부분을 우리는 일반적으로 쉘(shell) 이라고 부른다. 쉘은 사용자가 요구하는 응용프로그램을 운영체제에 전달해 사용자가 원하는 결과를 얻도록 해주는 역할을 담당하는 인터페이스라고 할 수 있다.. 쉘프롬프트 상에서는 사용자가 입력한 명령어를
해석하고 뜻을 확정 짓기 전에 먼저 확인하는 전이문자(meta character)들이
존재한다. 이들에 대해서 간단히 보도록 하자.
위와 같은 전이 문자 중에서 사용에 주의해야
할 부분이 있는데 바로 모든 문자를 대체 하는 ‘*’ 와일드 카드이다.
와일드 카드는 특히 rm 명령어와 같이 사용될 때 매우 위험한데
다음과 같은 경우를 생각해 보자. 만약에 실수로 ‘*.txt’ 라는
파일을 만들었다고 하자. rm \*.txt 이렇게 지우면 위와 같은 상황을 해결할 수 있을 것이다.(여담이었습니다.^^;) 리다이렉션과 파이프에 대해서는 챕터 3을 참조 하시면 됩니다. 쉘 스크립트는 실행될 때에 여러 가지 환경 변수의
값에 영향을 받는다. 이 변수들은 보통 대문자로 표시되는데, 사용자
정의 변수들과 구별하기 위해서 입니다.(사용자 정의 변수들은 편의상
대부분 소문자를 즐겨 쓰죠..) 핵심적인 환경 변수들은 다음과 같다. 환경 변수 - 변수 설명..
인자 변수 - 변수 설명
중요한 환경변수와 인자 변수들을 살펴 봤습니다. 간단히 환경변수들의 내용을 살펴 봅시다. 39% liks@doit:~> echo $HOSTNAME 우리는 ‘echo’ 명령어를 이용해 각 변수의
설정 값을 알아 볼 수 있다. 각 변수들이 값을 어떤 식으로 가지고
있는지 알아 보는 것이 나중에 많은 도움이 될 것이다. 86% liks@doit:~> linux=”It is a nice Operation
System”
이번에는 셋팅된 사용자 변수를 클리어 시켜 봅시다. 91% liks@doit:~> unset linux 93% liks@doit:~> 환경변수 ‘$linux’ 에 저장된 값이 클리어된 것을 확인하실 수 있습니다. 위에서 설명한 ‘echo’ 명령은 실제로 프롬프트 상에서는 거의 쓰이지 않지만 쉘스크립트 상에서는 아주 빈번히 사용되는 명령어입니다. 이제 간단한 쉘 스크립트를 짜 보도록 합시다. 108% liks@doit:/tmp> cat > test.sh 109% liks@doit:/tmp>chmod +x test.sh September 1999 niceGuy 111% liks@doit:/tmp> 눈여겨 보실 것은 쉘스크립트의 시작은 ‘#!’와 쉘의 절대 경로명을 함께 적어 준다는 것이지요. ‘sh’ 는 ‘bash’와 심볼릭 링크되어 있습니다. ‘/tmp’ 가 실행 PATH 가 아니기 때문에 test.sh 를 ‘/tmp’ 에서 찾도록’./’뒤에 ‘test.sh’ 를 써주셔야 합니다. ‘.’은 현재 디렉토리를 의미합니다. chmod +x 는 쉘 스크립트를 실행 가능한 명령어로 바꾸기 위해서 사용되었습니다. 위의 스크립트는 화면을 클리어하고 달력을 출력하고 echo 명령으로 두 줄의 공백을 만들고 인자로 받은 niceGuy를 출력하고 다시 GREAT!!를 출력하는 간단한 스크립트였습니다. 좀더 진보한 쉘 스크립트를 만들어 보기 위해 자주 사용되어지는 조건 판단 ,반복 문법등에 대해서 알아 봅시다.
### 조건문 ### ‘test’ 명령어는 쉘에 포함되어 있는 내부
명령어가 아니라 외부 명령어입니다. ‘test’ 명령어에서는 세가지 형태의 명령어 타입을 사용할 수 있습니다. 그것은 문자열 비교, 산술 비교, 파일 조건입니다. 명령어 타입은 다음과 같습니다. == 문자열 비교 ==
== 산술 비교 ==
== 파일 조건 ==
‘test’ = ‘[]’ 를 알아 봤으니 이제 if 문과의 활용 법을 알아 봅시다. --------------------------------------------------------
간단한 스크립트를 만들어서 테스트 해봅시다.
위 스크립트를 살펴 봅시다. ‘read’ 는 변수를
읽을 수 있도록 하는 구문입니다. 한가지 재미있는 부분은 ‘if’ 문이 끝날 때는 ‘fi’ 알려 준다는 것이지요. 뒷 부분에 나오겠지만 ‘case’ 문이 끝날 때에는 ‘esac’ 입니다. ^^; 다음은 ‘for’ 구문에 대해서 알아 보겠습니다. -------------------------------------------------------- 밸류 값들은 대개 문자열입니다. 변수들을 반복해서 출력해 주는 간단한 스크립트를 만들어 봅시다. #!/bin/sh 결과는 liks,love,forever 를 순서대로 출력해
주겠지요. 앞에서 살펴본 echo 명령어 옵션에서 -n 을 주게 된다면
주욱 붙어서 나오겠지요. 변수의 개수만큼 echo 문이 실행되는 간단한
스크립트였습니다. 이 때에 변수의 밸류에 공백을 넣고 싶을 때에는
따옴표로 묶어 주시면 됩니다. “liks doit forever” 이런 식으로
되겠지요. #!/bin/sh 이 스크립트는 asdf1.txt , asdf2.txt , asdf3.txt 파일을 print 의 각각의 변수로 읽어 와서 for 명령의 인자 목록으로 들어 갑니다. 일종의 와일드 카드로 사용되어진 것입니다. $(명령어) 는 이 부분은 () 안의 명령어의 스탠다드 아웃 출력을 변수로 취할 수 있도록 해줍니다. 각각의 파일을 cat 으로 읽어서 lpr 에게 파이프로 출력을 넘겨주어 프린팅을 할 수 있게 되겠지요. cat $print | lpr 대신에 lpr $print 해도 상관 없습니다. “while 구문” ‘while’ 구문의 용법은 다음과 같습니다. -------------------------------------------------------- 재미있는 것을 하나 만들어 볼까요~.. #!/bin/sh while [ “$passwd” !=”천재강백호” ] 물론 이 프로그램은 보안에 전혀 도움이 되지 않습니다. -_-; ctrl+c 를 눌러 버리면 스크립트가 그냥 종료 되버릴 테니까.... 예전에 터미널환경에서 돌아가던 BBS 들 중에 쉘 스크립트로 작성된 BBS 들도 있었다고 합니다. 그 당시 로긴을 할 때에 ctrl+c를 사용해 루트 쉘로 빠져 나갈 수 있었다는 말들도 있군요. ^^; 아무튼 위 프로그램은 암호 “천재강백호” 가 입력될 때까지 올바른 암호 입력을 계속 요구하게 되지요. 이번에는 특정 명령을 일정한 횟수만큼 반복하는 스크립트를 만들어 봅시다. #!/bin/sh ‘[]’ 부분은 ‘test’ 명령어를 참고 하세요. 위에서 눈여겨 볼 부분은 $(()) 구문입니다. $(()) 는 ‘()’안의 변수에 산술 연산을 할 수 있도록 해주는 구문입니다. 알아 두시면 유용하게 써먹을 때가 있으실 겁니다. 직접 실행해 보시고 결과 값을 확인해 보시길.. 이번에는 ‘case’ 구문에 대해서 살펴보도록 합시다. -------------------------------------------------------- 곧 바로 예제를 살펴 보도록 하겠습니다. #!/bin/sh read choice Q|q) echo “이 천재를 이기려면 10년은 더 수련하고 와라~!!”;; *) echo “멍멍멍.. 바보”;; 위의 예에서 눈여겨 보실 부분은 echo 문에서 ‘)’ 를 나타내기 위해 전이문자인 ‘\’ 이 사용되어진 점입니다. 그리고 ‘case’ 문 안에서 ‘Q|q) 의 or 연산이 사용되었다는 점이죠. ‘*’는 와일드 카드로 쓰였는데 1,2,3,Q,q 이외의 모든 문자들이 입력으로 들어 왔을 때 처리하기 위한 루틴입니다. ‘if’문에서 구문의 끝을 알려주기 위해 ‘fi’ 가 쓰였듯이 ‘case’ 문에서는 ‘esac’가 사용됩니다. 이 번에는 AND 와 OR 에 대해서 간단히 알아 보도록 하겠습니다. AND를 사용하면 여러 명령을 한꺼번에 실행 시킬 수 있는 장점이 있습니다. AND 연산에서는 바로 전 단계의 명령이 성공하였을 경우에만 다음 번 명령을 수행하게 됩니다. 구문의 문법은 다음과 같습니다. -------------------------------------------------------- AND 구문은 모든 명령어가 성공적으로 수행되었을 때에만 참이 되고 , 다른 경우에는 거짓이 됩니다. OR 구문은 어떤 하나의 명령의 수행이 성공할 때까지 일련의 명령을 계속 수행하게 됩니다. 구문의 문법은 다음과 같습니다. -------------------------------------------------------- 왼쪽 구문부터 시작하여 그 결과 값이 거짓(false) 라면 오른편의 명령어가 실행된다. 하나의 구문이 참(true)이 될 때까지 수행의 계속 하게 됩니다. 만일 어떤 구문이 참을 반환한다면 더 이상의 구문은 수행되지 않습니다. 동아리 회원 전화 번호 관리를 위한 간단한 쉘
스크립트를 짜 봅시다.
‘tel.txt’는 이런 식으로 입력하면 된다. 1기 96.마리오 데이터 베이스 연구실 Tel 018-388-8888 위의 프로그램은 수정의 여지가 많이 있다. 여러 가지 더 나은 방법들을 고안해 보는 것도 괜찮을 것이다. (tel.sh에 실행 권한을 준 후 실행 가능한 패스에 넣어주면 된다. 자신의 시스템의 다른 유저들에게도 실행 권한을 주도록 하자. ^^;) <쉘스크립트로 만든 전화 번호부> |