오늘은 쉘 스크립트의 조건문을 정리해보겠다.
if문
대부분의 프로그래밍 언어에서 이 if 문은 지원된다.
기본적으로 아래의 문법을 따른다.
기본 if 문
if [ 조건 ]
then
참일 경우 실행되는 부분
fi
여기서 [ 조건 ] 각각의 단어 사이 사이가 공백으로 구분되어 있어야한다는 것을 기억하자.
예시로 스크립트를 하나 작성해봤다.
이 스크립트를 실행해보면 다음과 같다
if ~else 문
if else 문은 yes or no 를 묻는거다. 형식은 아래와 같다.
if [ 조건 ]
then
참일 경우 실행되는 부분
else
거짓일 경우 실행되는 부분
fi
if~ else 문도 간단하게 예제코드를 작성해보았다.
이 스크립트를 실행시켜보면 ...
이렇게 결과가 뜨는걸 볼 수 있다.
if~ elif ~else
elif 가 포함된 조건문은 조건이 여러개일 때 사용한다.
if [ 조건1 ]
then
조건1에 맞는 내용이 실행되는 부분
elif [ 조건2 ]
then
조건2에 맞는 내용이 실행되는 부분
else
그외의 내용이 실행되는 부분
fi
예를 통해 보여드리겠다.
결과는 아래와 같다.
조건문에 사용되는 연산자와 처리조건
문자열비교연산자
문자열 비교 방법 | 내용 |
"문자열1" = "문자열2" | 두 문자열이 같을 때 참 |
"문자열1" != "문자열2" | 두 문자열이 다를 때 참 |
-n "문자열" | 문자열이 NULL이 아니면 참 |
-z "문자열" | 문자열이 NULL이면 참 |
산술비교연산자
산술 비교 방법 | 내용 |
수식1 -eq 수식2 | 두 수식이 같을 때 참 |
수식1 -ne 수식2 | 두 수식이 다를 때 참 |
수식1 -gt 수식2 | 수식1이 수식2 보다 크면 참 |
수식1 -ge 수식2 | 수식1이 수식2 보다 크거나 같으면 참 |
수식1 -lt 수식2 | 수식1이 수식2 보다 작으면 참 |
수식1 -le 수식2 | 수식1이 수식2 보다 작거나 같으면 참 |
!수식 | 수식 자체가 거짓이면 참 |
파일관련 처리 조건
if문에서 파일을 처리할때 사용하는 조건이다. 이 부분은 서버 설정할때 굉장히 많이 사용하니 잘 정리해놓자.
파일의 조건 | 내용 |
-d 파일이름 | 파일이 디렉토리 일 경우 참 |
-e 파일이름 | 파일이 존재할 경우 참 |
-f 파일이름 | 파일이 일반 파일이면 참 |
-g 파일이름 | 파일에 set-group-id가 설정될 경우 참 |
-r 파일이름 | 파일이 읽기 가능이면 참 |
-s 파일이름 | 파일크기가 0이 아닐때 참 |
-u 파일이름 | 파일에 set-user-id가 설정될 경우 참 |
-w 파일이름 | 파일이 쓰기 가능이면 참 |
-x 파일이름 | 파일이 읽기 가능이면 참 |
AND ,OR 연산자
연산자 | 내용 |
-a | and 연산, [] 안에서 사용가능,특수문자 안에는 \ 붙여야함 |
&& | and 연산 |
-o | or 연산, [] 안에서 사용가능,특수문자 안에는 \ 붙여야함 |
|| | or 연산 |
case~esac 문
if 문은 조건이 늘어나면 깔끔하지 못하고 복잡해진다. 프로그래밍 언어에서 이런 조건문을 깔끔하게 사용하고 싶을때 switch case 문을 쓰는데 여기 쉘 스크립트에도 그렇게 사용할 수가 있다.
case "$변수명" in
조건1)
조건1에 따른 결과 실행;;
조건2)
조건2에 따른 결과 실행1
조건2에 따른 결과 실행2;;
조건3)
조건3에 따른 결과 실행;;
*)
그 외 실행
esac
간단한 예제를 작성해보자. 아주 간단하게 작성은했지만 ㅎㅎ 실제로 서버 재기동 스크립트를 짤때 이런식으로 짠다 !
호출 결과는 아래와 같다.
끝
반응형
'Programming > ETC' 카테고리의 다른 글
[Shell] 기본적인 쉘 스크립트 프로그래밍 - 함수 (0) | 2020.10.21 |
---|---|
[Shell] 기본적인 쉘 스크립트 프로그래밍 - 반복문 (0) | 2020.10.21 |
[Shell] 기본적인 쉘 스크립트 프로그래밍 정리 - 변수 (2) | 2020.10.19 |
[Shell] 쉘 스크립트 프로그래밍 - 작성 방법과 실행 방법 (0) | 2020.10.16 |
[Shell] (Linux, Unix) 쉘 이란? (0) | 2020.10.16 |
댓글