[Linux] Shell Script - if 문 기초 [if / else / 비교 연산자]
Nowhere 와 Now here 의 차이

IT/ㄴ Linux Shall Script

[Linux] Shell Script - if 문 기초 [if / else / 비교 연산자]

TIENE 2023. 7. 20. 15:35
반응형

 if

(1) 기본 if

- 대부분의 프로그래밍 언어에서 사용된다.

- 영단어 if 뜻 그대로 [만약에 어떠한 조건이 참이면 실행] 하는 명령문이다.

- 주의해야 할점은 [ 조건 ] 사이의 각 단어에는 모두 공백이 있어야 한다는 것이다.

[기본 if문]

if [ 조건 ]
then
  참일 경우 실행
fi

 


(2) if ~ else

- [만약에 어떠한 조건이 참이면 실행] 이라는 if에 else를 추가할 수 있다.

- else를 추가하면 [만약에 어떠한 조건이 참이면 A를 실행하고 거짓이면 B를 실행] 하는 명령어가 가능하다.

if [ 조건 ]
then
         [참 - A]
else
         [거짓 - B]
fi

- [!=] 비교 연산자를 사용하여 두 문자열이 같지 않으면 참(True)이라는 결과를 출력했다.

 

- 입력한 ID가 admin이 맞으면 "관리자로 접속했습니다" / admin이 아니면 "일반사용자로 접속했습니다" 문구 출력하기


(3) 비교 연산자

문자열 비교
"문자열1" = "문자열2"  두 문자열이 같은면 참
"문자열1" != "문자열2"  두 문자열이 같지 않으면 참
-n "문자열"  문자열이 널(빈 문자열)이 아니면 참
-z "문자열"  문자열이 널(빈 문자열)이 이면 참

 

 

산술비교
[수식1] -eq [수식2] 두 수식(또는 변수)이 같으면 참 [=]
[수식1] -ne [수식2] 두 수식(또는 변수)이 같지 않으면 참 [!=]
[수식1] -gt [수식2] 수식1이 크다면 참[ >]
[수식1] -ge [수식2]  수식1이 크거나 같은면 참 [>=]
[수식1] -lt [수식2]  수식1이 작으면 참 [<]
[수식1] -le [수식2]  수식1이 작거나 같으면 참 [<=]
!수식                  수식이 거짓이라면 참

 

 

수식1 -eq 수식2 두 수식(또는 변수)이 같으면 참 =

수식1 -ne 수식2 두 수식(또는 변수)이 같지 않으면 참 !=

수식1 -gt 수식2 수식1이 크다면 참 >

수식1 -ge 수식2 수식1이 크거나 같은면 참 >=

수식1 -lt 수식2 수식1이 작으면 참 <

수식1 -le 수식2 수식1이 작거나 같으면 참 <=

!수식                 수식이 거짓이라면 참

 

- 국어 수학 영어 점수의 평균이 60점 이상이면 합격입니다 / 아닐 경우 불합격입니다 문구 출력하기

#! /bin/bash
echo 이름 : $name ; read name
echo 국어점수 : $kor ; read kor
echo 수학점수 : $mat ; read mat
echo 영어점수 : $eng ; read eng

total=`expr $kor + $mat + $eng`
avg=`expr $total / 3`

if [ "$avg" -gt 60 ]
then
        grade=합격입니다
else
        grade=불합격입니다
fi

echo 이름 : $name
echo 국어점수 : $kor 수학점수 : $mat 영어점수 : $eng
echo 합격여부 : $grade
exit 0

 

- ID가 tiene 이고 PW가 1111 일 경우, 로그인 성공 / 아닐 경우 로그인 실패 문구 출력하기

#! /bin/bash
echo ID : $id ; read id
echo PW : $pw ; read pw

if [ "$id" = tiene ]&&[ "$pw" = 1111 ]
then
        pass="로그인 성공"
else
        pass="로그인 실패"
fi

echo ID : $id
echo PW : $pw
echo 결과 : $pass
exit 0

 

 

- 평균이 60점 이상이면서 모든 과목이 40점 이상이면 합격 한 과목이라도 40점 미만이면 불합격 문구 출력하기

#! /bin/bash
echo 이름 : $name ; read name
echo 국어점수 : $kor ; read kor
echo 영어점수 : $eng ; read eng

total=`expr $kor + $eng`
avg=`expr $total / 2`

if [ "$avg" -ge 60 ]&&[ "$kor" -ge 40 ] &&[ "$eng" -ge 40 ]
then
        pass="합격"
else
        pass="불합격"
fi

echo 이름 : $name
echo 국어점수 : $kor
echo 영어점수 : $eng
echo 평균점수 : $avg
echo 합격여부 : $pass
exit 0


 

반응형