IT/셸 스크립트
셸 스크립트 3. 조건문
노오-력
2023. 1. 31. 01:08
프로그래밍 언어에서 조건문을 사용하듯이
셸 스크립트에서도 조건문을 사용할 수 있다.
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이 존재하고 실행가능하면 참 |