리눅스 쉘스크립트 비교연산자



비교연산자에 대해서 알아보자.


숫자 및 문자열 비교 그리고 파일 및 디렉토리 속성 및 존재여부를 비교할 수 있다.


그리고 if 조건문, case 분기문, for 및 while 반복문에 대해서도 알아보자.


▶ 비교연산자


숫자 비교

-eq

같다

if [ $VAR1 -eq $VAR2 ]

-ne

다르다

if [ $VAR1 -ne $VAR2 ]

-gt

크다(초과)

if [ $VAR1 -gt $VAR2 ]

-ge

같거나크다(이상)

if [ $VAR1 -ge $VAR2 ]

-lt

작다(미만)

if [ $VAR1 -lt $VAR2 ]

-le

같거나작다(이하)

if [ $VAR1 -le $VAR2 ]


문자열 비교

-n

문자열이 null 이 아니면 true

if [ -n "$STRING" ]

-z

문자열이 길이가 0 이면 true

if [ -z "$STRING" ]

=, ==

문자열이 같으면 true

if [ "$STRING1" == "$STRING2" ]

!=

문자열이 다르면 true

if [ "$STRING1" != "$STRING2" ]


기타

-r

파일 속성이 읽기 가능한지 true

if [ -r "$FILEPATH" ]

-w

파일 속성이 쓰기 가능한지 true

if [ -w "$FILEPATH" ]

-x

파일 속성이 실행 가능한지 true

if [ -x "$FILEPATH" ]

-s

파일 사이즈가 0 이상이면 true

if [ -s "$FILEPATH" ]

-d

해당 디렉토리가 존재하면 true

if [ -d "$FILEPATH" ]

-f

해당 파일이 존재하면 true

if [ -f "$FILEPATH" ]

-h

해당 파일이 링크파일이면 true

if [ -h "$FILEPATH" ]

!

조건이 반대이면 true

if [ ! -r "$FILEPATH" ]


AND 및 OR

-a

AND 조건

if [ -r "$FILEPATH" -a -w "$FILEPATH" ]

-o

OR 조건

if [ -r "$FILEPATH" -o -w "$FILEPATH" ]



다음에는 조건문에 대해서 알아보자.


▶ if 조건문


#!/bin/sh


VAR=3


if [ $VAR -eq 1 ] ; then

        echo 1

elif [ $VAR -eq 2 ] ; then

        echo 2

elif [ $VAR -eq 3 ] ; then

        echo 3

else

        echo -1

fi



▶ case 분기문


#!/bin/sh


VAR=3


case $VAR in

        1)

                echo 1;;

        2)

                echo 2;;

        3)

                echo 3;;

        *)

                echo -1;;

esac


STR="blue"


case "$STR" in

        "red")

                echo "Red";;

        "green")

                echo "Green";;

        "blue")

                echo "Blue";;

        *)

                echo "Default";;

esac



▶ for 반복문


#!/bin/sh


for VAR in {1,2,3,4,5}

do

        echo $VAR

done


for USER in `ls /home`

do

        echo $USER

done



▶ while 반복문


#!/bin/sh


VAR=10


while [ $VAR -gt 0 ]

do

        echo $VAR

        VAR=`expr "$VAR" "-" "1"`

done


expr은 계산시 꼭 필요하다.


블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,