본문 바로가기
IT/셸 스크립트

셸 스크립트 3. 조건문

by 노오-력 2023. 1. 31.

프로그래밍 언어에서 조건문을 사용하듯이

셸 스크립트에서도 조건문을 사용할 수 있다.

 

1. if 문 사용

아래와 sample3-1.sh 파일을 만들어서 chmod 로 실행 권한을 주자

#!/bin/sh

if [ $1 = tom ]
then
	echo Hello! tom.
elif [ $1 = jerry ] 
then
	echo Hello! jerry.
else
	echo who are you?
fi

 

인자를 뒤에 넣어 실행해 보면 다음과 같은 결과를 볼 수 있다.

프로그래밍 언어 if 문과 유사하다

 

우선   

if [   ]  대괄호 안에 조건을 입력하고

조건이 참이면 then 을 실행한다.

조건을 추가하려면 elif 를 사용하면되고

 

어떠한 조건에도 참이 나오지 않으면 최종적으로 else가 실행된다.

그리고 제일 마지막에 if문이 끝났다는 표시로 fi 를 입력해 줘야한다.

 

 

2. test 명령어

조건 판정은 [ ] 뿐만 아니라 test 명령어도 사용 가능하다.

아래와 같이 sample3-2.sh 를 작성한 뒤 chmod 로 실행권한을 주자.

#!/bin/sh

if test $1 = $2; then
        echo $1 and $2 are same.
else
        echo $1 and $2 are different.
fi

$1과 $2에 A A / A B 를 넣었을때 각각의 결과이다.

test 명령어는 참/거짓 판정에 사용하는 명령어이기 때문에 [ ]가 필요하지 않다.

; 세미콜론을 사용하면 줄바꿈을 대신할 수 있다.

if 문 이기 때문에 마지막에는 fi로 닫아줘야한다.

 

3. case문

case문도 작성할 수 있다.

아래와 같이 sample3-3.sh 를 작성한 뒤 chmod로 실행권한을 주자.

#!/bin/sh

case $1 in
        orange) echo orange is fruit ;;
        dog) echo dog is annimal ;;
        *) echo i don\'t know what is this ;;
esac

실행한 결과는 위와 같다.

case 뒤에 변수를 지정하고 in 으로 감싼다

그 뒤에 비교할 내용을 작성하고 끝에 ;;를 붙이면 된다.

그리고 어떤것도 일치하지 않으면 마지막에 *으로 지정하면 된다.

 

esac 로 닫아줘야한다. <- case를 거꾸로 한것이다.

 

 

 

 

⁂ test 식

문자열 관련  
-n str str 문자열 길이가 0이 아니면 참
-z str str 문자열 길이가 0이면 참
str1 = str2 str1과 str2가 같으면 참
str1 != str2 str1 과 str2가 다르면 참

 

정수(숫자) 관련  
n1 -eq n2 n1과 n2가 같으면 참
n1 -ne n2 n1과 n2가 다르면 참
n1 -gt n2 n1이 n2 보다 크면 참
n1 -ge n2 n1이 n2 보다 크거나 같으면 참
n1 -lt n2 n1이 n2 보다 작으면 참
n1 -le n2 n1이 n2 보다 작거나 같으면 참

 

파일(디렉터리) 관련  
-f file file 파일이 존재하고 일반파일이면 참
-c file file 파일이 존재하고 디바이스 파일이면 참
-e file file 파일이 존재하면 참
-d file file이 존재하고 디렉터리이면 참
-r file file이 존재하고 읽기가능하면 참
-w file file이 존재하고 쓰기가능하면 참
-x file file이 존재하고 실행가능하면 참

 

 

 

 

 

'IT > 셸 스크립트' 카테고리의 다른 글

셸 스크립트 4. 옵션 처리  (0) 2023.02.02
셸 스크립트 4. 반복문  (0) 2023.02.01
셸 스크립트 2. 변수 사용  (0) 2023.01.30
셸 스크립트 1. 작성과 실행  (0) 2023.01.29
셸 변수와 환경 변수  (0) 2023.01.28