메모

유닉스 쉘 스크립트 작성법...펌

맘편한넘 2012. 7. 23. 06:22

 

4. 유닉스 쉘 (1)



4.1. 종류와 특징
유닉스를 사용하기 시작하면서 쉘에 대해 많이 들으셨을 것입니다. 그렇다면, 이 쉘이란 과연 무엇일까요?
여러 가지 말로 대답할 수 있겠지만, 가장 간단한 대답은 쉘이란, 명령어 해석기(command proccessor)라고 대답할 수 있습니다. 즉, 사용자가 입력하는 명령을 읽고 해석하는 프로그램이란 뜻입니다.
=>쉘은 사용자가 프로그램을 수행하고 프로세스들의 파이프라인을 만들고 출력을 파일에 저장하며, 동시에 하나이상의 프로그램이 수행되도록 합니다.
이처럼 명령어 해석기로서의 역할뿐만 아니라, 쉘은 또한 프로그래밍 언어이기도 합니다. 쉘이 해석할수 있는 "스크립트(scripts)"라는 프로그램을 작성할수 있습니다.
이 스크립트에는 일반적인 유닉스 명령뿐만 아니라 특별한 쉘 프로그래밍 언어도 포함할수도 있습니다.
종류에는 Bourne쉘, Korn쉘, C쉘등이 입니다. 각 쉘은 고유의 프로그래밍 언어와 규칙을 가지고 있습니다. 하지만, 유닉스에 익숙한 사용자가 되기 전까지는 어떤 쉘을 사용하는가는 별로 중요하지 않습니다.

4.2. 쉘 프로그래밍
쉘 프로그래밍이라고 해서 조금은 낯설고 어렵게 느껴질 지도 모릅니다.
간단히 말하면 DOS에서의 Batch파일 작성과 거의 같은 것입니다. 프로그래밍이 쉽고 유닉스의 다양한 기능을 사용할 수 있을뿐만 아니라 컴파일 과정을 거치지 않으므로(Interpreter방식) 결과값을 빨리 구할수 있고 디버깅및 응용이 아주 쉽습니다.
그리고 자주 사용하게 될 쉘 스크립트(Shell Script)란 말은 쉘 프로그래밍의 문법을 사용하여 작성된 텍스트 파일을 의미합니다.
    변수사용
    어떤 프로그램 언어를 사용하더라도 변수의 설정및 사용이 가장 기본적으로 필요합니다.
    변 수 명=값
    주의: '=' 좌우에 스페이스가 있어서는 안됨
    설정된 변수를 사용할때는 변수명 앞에 '$'를 붙여서 쓰면 됩니다.
    $변수
    환경변수를 사용할때는 다음과 같이 합니다.
    PATH=/usr/bin
    export PATH
    export 명령을 사용하여 환경변수로 만들어 주어야 합니다. 프로그램 언어의 전역 변수와 같은 것으로 생각하면 됩니다.
    array변수를 사용할때는 약간의 트릭을 이용할수 밖에 없습니다. 다음과 같이
    변수명1=값1
    변수명2=값2
    그럼, 간결한 조건문을 알아본뒤, 잡다한 설명은 가능하면 배제하고 가능한한 간결하게 꼭 필요한 기능만을 설명하고, 그 사용 예를 쉘 프로그램을 가미시켜 설명하겠습니다.
    표현방식 참이 되는 경우
    [ $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의 값이 작거나 같은 경우
    소숫점 이하의 숫자는 무시되므로 유의하여야 합니다

    그럼, 지금까지 배운 문법을 가지고 변수 A,B에 들어있는 숫자의 대소를 비교하여 그 결과를 출력해 봅시다.
    Code
    A=1
    B=2
    if [ $A -eq $B ]
    then
    echo "A is equal to B"
    elif [ $A -gt $B ]
    then
    echo "A is greater than B"
    elif [ $A -lt $B ]
    then
    echo "A is less then B"
    fi

    쉘 스크립트 작성및 실행요령
    vi편집기를 이용하여 위의 내용을 'numcompare' 파일로 저장한 후 command 모드에서 'chmod +x numcompare'를 한 후 'numcompare'라 치고 Enter를 치면 간단히 실행시킬 수 있습니다.
    결 과
    기본 설정값으로 A에는 1, B에는 2를 넣고 그 대소를 비교하여 결과를 출력 하도록 합니다. 여기서 사용한 if문은 if문 설명 부분에서 자세히 설명 하겠습니다. 실행 결과로 당연히 "A is less than B"라는 문장이 출력될 것입니다.
    실습
    $set colors=red
    $echo colors ====>colors
    $echo $colors ====>red
    $set colors={red yellow}
    $echo $colors ====>red yellow
    $echo $colors[1] ====>red

 

<출처 : http://unix.co.kr/data/unix0/?p=05>