* if~case문
if문의 기본문법
if [ 조건 ]
then
참일 경우 실행
fi
예제1) vi if1.sh
01 #!/bin/sh
02 if [ "if1" = "if1" ] // 공백 주의!
03 then
04 echo "true"
05 fi
06 exit 0
실행 결과
예제2) vi if2.sh
01 #!/bin/sh
02 if [ "if2" != "if2" ] // != 는 같지않다라는 뜻
03 then
04 echo "true"
05 else
06 echo "false"
07 fi
08 exit 0
실행 결과
문자열 비교 연산자
문자열 비교
결과
"문자열1" = "문자열2"
같으면 참
"문자열1" != "문자열2"
같지 않으면 참
-n "문자열"
문자열이 Null 이 아니면 참
-z " 문자열"
문자열이 Null이면 참
산술 비교 연산자
산술 비교
결과
수식1 -eq 수식2
두 수식이 같으면 참
수식1 -ne 수식2
같지 않으면 참
수식1 -gt 수식2
수식1이 크다면 참
수식1 -ge 수식2
수식1이 크거나 같으면 참
수식1 -lt 수식2
수식1이 작으면 참
수식1 -le 수식2
수식1이 작거나 같으면 참
!수식
수식이 거짓이면 참
예제 3) vi if3.sh
01 #!/bin/sh
02 if [ 100 -eq 200] // -eq 두 수식이 같으면 참
03 then
04 echo "100과 200은 같다"
05 else
06 echo "100과 200은 다르다"
07 fi
08 exit 0
실행 결과
파일 처리 조건
파일 조건
결과
-d 파일이름
파일이 디렉터리면 참
-e 파일이름
파일이 존재하면 참
-f 파일이름
파일이 일반 파일이면 참
-g 파일이름
파일이 set-group-id 가 설정되면 참
-r 파일이름
파일이 읽기 가능이면 참
-s 파일이름
파일 크기가 0이 아니면 참
-u 파일이름
파일에 set-user-id가 설정되면 참
-w 파일이름
파일이 쓰기 가능 상태면 참
-x 파일이름
파일이 실행 가능 상태면 참
예제 4) vi if4.sh
01 #!/bin/sh
02 fname=/lib/systemd/system/httpd.service
03 if [ -f $name ]
04 then
05 head -5 $fname
06 else
07 echo "웹 서버가 설치되지 않았습니다"
08 fi
09 exit 0
- fname에 /lib/systemd/system/httpd.service 웹 서버 실행파일저장
/lib/systemd/system/httpd.service 파일이 일반 파일이면 참이므로 head -5 $fname을 실행
그렇지 않으면 거짓 "웹 서버가 설치되지 않았습니다" 가 출력
실행 결과
case~esac 문
if문은 참과 거짓 두 가지 경우만 사용가능 ( 이중분기 )
하지만 여러 경우의 수가 있을 때 if문을 사용하면 구문이 복잡해짐 이때 case문으로 해결 ( 다중분기 )
case문 예제1) vi case1.sh
vi case1.sh
01 #!/bin/sh
02 case "$1" in
03 start)
04 echo "시작";;
05 stop)
06 echo "중지";;
07 restart)
08 echo "재시작";;
09 esac
10 exit 0
※ 세미콜론(;) ;; 두개를 꼭 써줘야합니다
실행 결과
case문 예제2) vi case2.sh
01#!/bin/sh
02 echo "Do you know Linux? (yes / no)"
03 read Linux
04 case $Linux in
05 yes | y | Y | Yes | YES )
06 echo "알아요";;
07 [nN]*)
08 echo "몰라요";;
09 *)
10 echo "yes or no만 입력해주세요"
11 exit 1;;
12 esac
13 exit 0
5행 yes말고 다양한 선택지
7행 n과 N이 첫글자에 들어가면 뒤에 글자는 아무거나 와도 상관없습니다
실행 결과
AND , OR 관계 연산자
and -a 또는 && 을 사용
or -o 또는 || 를 사용
-a 와 -o 는 [ ] 안에 사용할 수 있습니다. 괄호 등 특수 문자 앞에는 역슬래시(\)를 사용
AND , OR 예시) vi andor.sh
01 #!/bin/sh
02 echo "파일의 경로를 입력하세요"
03 read fname
04 if [ -f "$fname" ] && [ -s "$fname" ] ; // if [ \( -f "$fname" \) -a \( -s $fname \) ] ; 로 대신해도 가능합니다
05 then
06 head -5 $fname
07 else
08 echo "파일이 존재하지 않습니다"
09 fi
10 exit 0
sh andor.sh 를 입력하고 경로를 /etc/passwd 로 잡으면 리눅스 사용자 계정정보가 head -5 5행출력됩니다.
-f 와 -s의 옵션을 주었으므로 일반파일이나 파일크기가 0이아니면 6행에 적은 head -5 $fname을 출력하게 됩니다.
실행 결과
'❌이전글 > 이전글' 카테고리의 다른 글
리눅스CentOS7- 마스터 DNS서버 , 네임서버 구축 (0) | 2019.05.28 |
---|---|
로컬 DNS 서버 구축하기 (0) | 2019.05.25 |
정보처리기사 합격했습니다 (1) | 2019.05.24 |
DNS란 무엇인가 재귀적,반복적 쿼리 (2) | 2019.05.21 |
티스토리 블로그 네이버에 노출 웹마스터도구 (1) | 2019.05.12 |
셸 스크립트의 기초를 배우자(1) (0) | 2019.05.11 |
리눅스(centos7) - 하드디스크 추가에서 오토마운트까지 (0) | 2019.05.07 |
티스토리 마우스 드래그 복사금지 (2) | 2019.05.06 |