[쉘 스크립트] 조건문
1. if 문
if [ 조건문 ]
then
참인경우
else
거짓인경우
fi
if로 시작하여 if로 끝난다. 조건문 내의 단어 사이에는 모두 공백이 있어야 한다.
조건문은 다른 프로그래밍 언어와 비슷하게 작성하면 된다.
1) 문자열 비교
문자열 비교 연산자는 다음과 같다.
문자열 비교 연산자 | 의미 |
---|---|
= | 두 문자열이 같으면 참 |
!= | 두 문자열이 다르면 참 |
-n | 문자열이 NULL이 아니면 참 |
-z | 문자열이 NULL이면 참 |
#!/bin/sh
# if.sh
if [ $1 = "hi" ]
then
echo "참입니다"
else
echo "거짓입니다"
fi
exit 0
2) 산술 비교
산술 비교 연산자는 다음과 같다.
산술 비교 연산자 | 의미 |
---|---|
A -eq B | A = B |
A -ne B | A != B |
A -gt B | A > B |
A -ge B | A >= B |
A -lt B | A < B |
A -le B | A <= B |
!A | !A |
#!/bin/sh
# if.sh
if [ `expr $1 + $2` -ge 10 ]
then
echo "10보다 큼"
else
echo "10보다 작음"
fi
exit 0
3) 파일 관련 조건
파일을 처리하는 조건은 다음과 같다.
조건 | 결과 |
---|---|
-d 파일이름 | 파일이 디렉토리면 참 |
-f 파일이름 | 파일이 일반 파일이면 참 |
-e 파일이름 | 파일이 존재하면 참 |
-g 파일이름 | 파일에 set-group-id가 설정되면 참 |
-u 파일이름 | 파일에 set-user-id가 설정되면 참 |
-r 파일이름 | 파일이 읽기 가능이면 참 |
-w 파일이름 | 파일이 쓰기 가능이면 참 |
-x 파일이름 | 파일이 실행 가능이면 참 |
-s 파일이름 | 파일 크기가 0이 아니면 참 |
#!/bin/sh
# if.sh
fname=/lib/systemd/system/sshd.service
if [ -f $fname ]
then
head -5 $fname
else
echo "sshd 서버가 설치되지 않음"
fi
exit 0
2. case 문
case로 시작하여 esac로 끝난다. c++에서의 switch case문과 작동 방식이 비슷하다. 하지만 변수에 정수 대신 문자열이 들어간다. 각 조건의 실행문은 ;; 로 구분되며, *)는 else를 뜻한다.
case 문자열 in
경우1)
실행문1;;
경우2)
실행문2;;
*)
실행문3;;
esac
#!/bin/sh
#case.sh
echo "yes나 no 입력"
read word
case $word in
yes)
echo "yes 입력함";;
no)
echo "no 입력함";;
*)
echo "다른거 입력함";;
esac
exit 0
댓글남기기