본문 바로가기
Linux/shell script

[Linux] shell script if문 정리

by onda.cloud 2022. 6. 11.
shell script if문이란 ?

프로그램 언어에서 사용하는 if랑 같은 조건문을 뜻합니다. 조건이 참인지 거짓인지 판단한 후 사용자가 입력한 스크립트를 수행시켜줍니다. 또한 c언어 기반으로 만들어진 shell의 if문 같은 경우 다른 언어와 다르게 단순한 파일구조를 가지고 있습니다.

 

 if문 구조
if [ expression ]; then
        command
elif [ expression ]; then
        command
else
fi

 

if문 특징

1. [ ] (대괄호)를 사용할 때는 문장 앞에 공백이 있어야 합니다.

2. 변수를 입력할 때는 $를 붙입니다.

3. if로 시작하고 스크립트를 끝낼 때는 fi로 끝냅니다.

 

(python 프로그래밍에는 if문을 사용시 fi로 안 닫아도 error가 출력되지 않습니다. 하지만 shell script if문은 fi로 스크립트를 끝내지 않으면 error가 출력됩니다.)

 

if - else example

이 예제는 if - else를 사용한 if문 예제입니다. a와 b의 값이 같으면 "a is equal to b"라는 문자열을 출력하고 다르면 "a is not equal to b"라는 문자열을 출력합니다.

output

 

if문 산술 비교 연산자
기호 의미 표현
-eq (equal) 같다 if [ $a -eq $b ]
-ne (not equal) 같지 않다 if [ $a -ne $b ]
-lt (less than) 작다 if [ $a -lt $b ]
-le (less than or equal) 작거나 같다 if [ $a -le $b ]
-gt (greater than) 크다 if [ $a -gt $b ]
-ge (greater than or equal) 크거나 같다 if [ $a -ge $b ]
> 크다 (($a > $b))
>= 크거나 같다 (($a >= $b))
< 작다 (($a < $b))
<= 작거나 같다 (($a <=$b))

 

if - elif - else example

이 예제는 if - elif - else를 사용한 if문 예제입니다.a와 b의 값이 같으면 "a is equal to b"라는 문자열을 출력하고 다르면 "a is not equal to b"라는 문자열을 출력합니다 또한 a가 b보다 작으면 "a is less than b"라는 문자열을 출력합니다

output

 

if문 논리 연산자
기호 의미 표현
&& 두 논리식에 AND를 수행 if [ expression 1 ] &&
[ expression 2 ]
|| 두 논리식에 OR을 수행 if [ expression 1 ] ||
[ expression 2 ]
! 논리 식의 결과값에 NOT을 수행 if ! [ expression ]

 

if - AND exmaple

이 예제는 if - AND를 사용한 if문 예제입니다. 

output

 

if - OR example

이 예제는 if - OR을 사용한 if문 예제입니다.

output

 

if - NOT exmaple

이 예제는 if - NOT을 사용한 if문 예제입니다.

output

 

if문 문자열 연산자
기호 의미 표현
= 같다 if [ "$a" = "$b" ]
== 같다 if [ "$a" == "$b" ]
!= 같지 않다 if [ "$a" != "$b" ]
-z 문자열이 null이다 (길이가 0) if [ -z "$a" ]
-n 문자열이 null이다 if [ -n "$a" ]
> ASCII값이 크다 if [[ "$a" < "$b" ]]
< ASCII값이 작다 if [[ "$a" > "$b" ]]

 

if문 파일비교
기호 의미 표현
-d Directory if [ -d <file> ]
-f File if [ -f <file> ]
-e exist if [ -e <file>
-r readable if [ -r <file> ]
-w writable if [ -w <file> ]
-x execuable if [ -x <file> ]

 

댓글