if문 case문

shinyeongwoon·2022년 11월 23일
0

서버

목록 보기
14/18

기본 if문

[ 조건 ] 안에 각 단어 사이에 공백이 있어야 한다는 것이 주의!!

형식
if [ 조건 ]
then
참인 경우 실행
fi

2행 : [] 조건식이 들어감
'='는 문자열이 같은지 비교 '!='는 문자열이 같지 않은지 비교
if1.sh에서는 조건식이 참임으로 true 출력
[] 대신 test 키워드를 사용할 수도 있다. ex) if test "cook" = "cook"

if-else문

형식
if [ 조건 ]
then
참인 경우 실행
else
거짓인 경우 실행
fi

조건문의 비교 연산자

조건문에서는 문자열 비교와 산술 비교가 가능

📌 문자열 비교
"문자열" = "문자열" : 두 문자가 같으면 true
"문자열1" != "문자열" : 두 문자가 다르면 true
-n "문자열" : 문자열이 NULL(빈 문자열)이 아니면 true
-z "문자열" : 문자열이 NULL(빈 문자열)이면 true

📌 산술 비교
수식1 -eq 수식2 : 두 수식(또는 변수)이 같으면 참
수식1 -ne 수식2 : 두 수식(또는 변수)이 같지 않으면 참
수식1 -gt 수식2 : 수식1이 크면 참
수식1 -ge 수식2 : 수식1이 크거나 같으면 참
수식1 -lt 수식2 : 수식1이 작으면 참
수식1 -le 수식2 : 수식1이 작거나 같으면 참
!수식 : 수식이 거짓이면 참

파일 관련 조건

-d 파일명 : 파일이 디렉터리면 참
-e 파일명 : 파일이 존재하면 참
-f 파일명 : 파일이 일반 파일이면 참
-g 파일명 : 파일에 set-group-id가 설정되면 참
-r 파일명 : 파일이 읽기 가능이면 참
-s 파일명 : 파일 크기가 0이 아니면 참
-u 파일명 : 파일에 set-user-id가 설정되면 참
-w 파일명 : 파일이 쓰기 가능이면 참
-x 파일명 : 파일이 실행 가능이면 참


2행 : fname 변수에 cron 서버 실행 파일인 /lib/systemd/system/cron.service를 저장
3행 : fname 변수에 저장된 /lib/systemd/system/cron.service 파일이 일반 파일이면 참으로 5행을 실행, 그렇제 않으면 거짓으로 7행 실행
5행 : fname에 들어 있는 파일의 앞 다섯 행을 출력

case ~ esac 문

경우의 수가 셋이상이라면 if문을 중복해야 하므로 구문이 복잡
이럴 때 사용하는 것이 case문

2행 : 첫 번째 파라미터 변수(명령 실행 시 추가한 값)인 $1 값에 따라서 3행,5행,7행,9행으로 분기
4행: 3행에서 start)인 경우 실행 . 끝에 세미 콜론 2개(;;)를 넣어야 함
11행 : case문의 종료를 나타냄

3행 : answer 변수에 입력한 값을 받음
5행 : 입력된 값이 yes,y,Y,Yes,Yes 중 하나 이면 6행 실행
실행할 구문이 더 있으면 끝에 ;;넣지 않음
마지막 실행 구문에 ;; 를 넣어줌
[nN]*) 는 앞에 n 또는 N이 들어가는 모든 단어를 인정한다는 의미
정상적인 종료가 아니면 exit 1로 종료

and, or 관계 연산자

And의 의미는 -a 또는 &&, or은 -o 또는 ||를 사용
-a 나 -o는 테스트문([]) 안에서 사용할 수 있는데, 이때 괄호 등의 특수문자 앞에는 백슬래쉬()를 넣어야 함

4행에서 입력한 파일 이름이 일반 파일이고 크기가 0이 아니면 5행 실행
세미 콜론은 앞뒤 구문을 행으로 분리하는 기능

0개의 댓글