linux shell스크립트 기초

이번장에서는 기본적인 제어문을 살펴보도록 하겠다.

For 문

for 문은 기본적으로 반복되는 작업을 할때 사용한다.

기본 구조

for 변수명 in 변수값
do
반복할 명령
done

간단예제)test1~3디렉토리 생성

for i in test1 test2 test3
do
mkdir $i
done

설명.
test1~3까지의 변수값을 변수 i 에 입력한 후 반복적으로 mkdir 명령 실행

IF 문

if문은 조건을 검색해서 조건에 따라서 다른 처리를 할 수 있도록 해준다.
기본구조

if [ 조건 ]
then
처리구문
fi

 

if [ 조건 ]
then
조건이 참일때 실행할 구문
else
조건이 거짓일때 실행할 구문
fi

 

if [ 조건 ]
then
조건이 참일때 실행할 구문
elif [ 조건2 ]
then
조건2가 참일때 실행할 구문
else
조건2가 거짓일때 실행할 구문
fi

 

if문은 실제 스크립트에서 가장 많이 사용이 될 것이다. 조건을 검사하기 위한 다양한 방법을 살펴보도록 하자.
1. 문자열 데이터 검사

str1 = str2 두개의 문자열이 같은 경우 참
str1 != str2 두개의 문자열이 다르면 참
-n str1 문자열 길이가 0 보다 크면 참
-z str1 문자열의 길이가 0 이면 참

2. 숫자 데이터 검사

int1 -eq int2 int1 과 int2가 같은 수이면 참
int1 -ne int2 int1 과 int2가 다른 수이면 참
int1 -gt int2 int1 이 int2보다 크면 참
int1 -ge int2 int1 이 int2보다 크거나 같으면 참
int1 -lt int2 int1 이 int2보다 작으면 참
int1 -le int2 int1 이 int2보다 작거나 같으면 참

3. 파일 디렉토리검사
아마 가장 많이 사용하게 될 부분이 아닐까 싶다.

-r 파일명 읽기 권한이 있으면 참
-w 파일명 쓰기 권한이 있으면 참
-x 파일명 실행 권한이 있으면 참
-f 파일명 파일이면 참
-d 파일명 디렉토리면 참
-e 파일명 파일명이 존재하면 참

4. 조건 검색문 test
test 는 실행구문을 검사해서 참이면 0 을 아니라면 0 이외의 값을 반환해 준다.

간단예제) test 디렉토리가 존재하지 않으면 생성하는 조건문

if [ ! -d /test ]
then
mkdir /test
fi

 

while

조건에 참일 때까지 반복 수행을 하고 조건이 거짓이 되면 반복을 중단한다.

기본구조

while [ 조건 ]
do
반복 실행할 명령
done

 

간단예제)

int=1
while [ $int -lt 5 ]
do
  sq=`expt $int \* $int`
  echo $sq
  int=`expt $int + 1`
done
echo "job completed"

여기서 눈여겨볼 곳은 네번째 라인의 ` 이다.
역인용부호는 시스템의 명령어를 실행하고 그 결과를 변수로 사용하고자 할 경우에 사용한다.
expr 명령은 기본적인 수식 연산을 하기 위한 프로그램이다.

until

while 문과는 반대의 경우이다. 조건이 거짓일 경우에 계속 반복을 수행하다가
조건이 참이되면 반복을 빠져나온다.
기본구조
until [ 조건 ]
do
반복실행할 명령
done

case

case 문은 조건에 맞는 경우를 선택해서 선택된 조건에 맞게 명령을 수행해준다.
기본구조
case 조건 in

조건1) 실행할 명령 ;;
조건2) 실행할 명령;;

esac
간단예제)

case $1 in
    1) echo "1을 입력했습니다";;
    2) echo "2를 입력했습니다";;
    *)1과2가 아닌 다른 수를 입력했습니다;;
esac

첫번째 라인의 $1 은 첫번째 인자를 이야기 한다.
즉 위에서 만들 파일이 test.sh 라면 ./test.sh 1 이런식으로 1이라는 인자값을 줄 수가 있다.

[root@mail ~]# ./case.sh 1
input 1
[root@mail ~]# ./case.sh 2
input 2
[root@mail ~]# ./case.sh 3
input others
[root@mail ~]# 

 

기본적인 bash 문법에 대해서 살펴보았다.
실제로 유용하게 쓰이는 쉘 스크립트는 이미 여러분의 리눅스 시스템에 많이 있다.
특히나 /etc/init.d 하위에 있는 구동 스크립트들을 열어보도록 하자.
아주 많은 예제를 볼 수 있을 것이다.
다음 장에서는 실제로 스크립트를 활용하는 과정에 대해서 살펴보도록 하겠다.

Pages:

stone has written 25 articles

Leave a Reply