[Shell Script]Conditional Statement

https://github.com/DEBTORSLEE/Study/blob/main/Shell/2-ConditionalStatement.md

Conditional Statement

가정법, 조건문이라 불리는 if, else, elif에 대해 알아보자.


구조

기본적인 구조는 if 조건; then로 시작해서 fi로 끝난다.
else나 else에 조건을 주고싶다면 elif 조건; then을 사용하여 조건문을 사용하게돈다.
1) if

if 조건; then
    실행문......
fi

2) else
if 조건; then
실행문……
else
실행문……
fi
3) elif

if 조건; then
    실행문......
elif 조건; then
    실행문...... 
else
    실행문......
fi

조건식

기본적인 조건식은 아래와 같다.

값or변수 조건 값or변수

Shell Sript에서는 약어를 이용해 비교할 수 있다.

if [ 1 -qe 1]; then
    echo "둘다 1입니다."
fi

비교연산자

1) == / -eq

if [[ ${a} == "ex" ]]; then
    echo "ex입니다."
else
    echo "ex가 아닙니다."
fi
if [ ${a} -eq "ex"]; then
    echo "ex입니다."
else
    echo "ex가 아닙니다."
fi

2) != / -ne

if [[ ${a} != "ex" ]]; then
    echo "ex가 아닙니다."
else
    echo "ex입니다."
fi
if [ ${a} -ne "ex" ]; then
    echo "ex가 아닙니다."
else
    echo "ex입니다."
fi

3) > / -gt

if [[ ${a} > 0 ]]; then
    echo "0보다 큽니다."
else
    echo "0보다 크지 않습니다."
fi
if [ ${a} -gt 0 ]; then
    echo "0보다 큽니다."
else
    echo "0보다 크지 않습니다."
fi

4) >= / -ge

if [[ ${a} >= 0 ]]; then
    echo "0보다 크거나 같습니다."
else
    echo "0보다 크지 않거나 같습니다."
fi
if [ ${a} -ge 0 ]; then
    echo "0보다 크거나 같습니다."
else
    echo "0보다 크지 않거나 같습니다."
fi

5) < / -lt

if [ ${a} > 0 ]; then
    echo "0보다 작습니다."
else
    echo "0보다 작지 않습니다."
fi
if [ ${a} -lt 0 ]; then
    echo "0보다 작습니다."
else
    echo "0보다 작지 않습니다."
fi

6) <= / -le

if [[ ${a} > 0 ]]; then
    echo "0보다 작거나 같습니다."
else
    echo "0보다 작지 않거나 같습니다."
fi
if [ ${a} -le 0 ]; then
    echo "0보다 작거나 같습니다."
else
    echo "0보다 작지 않거나 같습니다."
fi

7) && / -a

if [[ ${a} == 0 && ${b} == 1 ]]; then
    echo "a==0과 b==1 두 비교값이 모두 참입니다."
else
    echo "a==0과 b==1 두 비교값이 모두 참이 아닙니다."
fi
if [ ${a} == 0 -a ${b} == 1 ]; then
    echo "a==0과 b==1 두 비교값이 모두 참입니다."
else
    echo "a==0과 b==1 두 비교값이 모두 참이 아닙니다."
fi

8) || / -o

if [[ ${a} == 0 || ${b} == 1 ]]; then
    echo "a==0과 b==1 두 비교값 중 하나라도 참입니다."
else
    echo "a==0과 b==1 두 비교값 모두 참이 아닙니다."
fi
if [ ${a} == 0 -o ${b} == 1 ]; then
    echo "a==0과 b==1 두 비교값 중 하나라도 참입니다."
else
    echo "a==0과 b==1 두 비교값 모두 참이 아닙니다."
fi

파일연산자

1) -f
Reguar 파일이면 참 반환

if [ -d "Desktop" ]; then
  echo "참"
else 
  echo "거짓"
fi

2) -d
디렉터리면 참 반환

if [ -d "Desktop" ]; then
  echo "참"
else 
  echo "거짓"
fi

3) -L
심블릭 링크이면 참 반환

if [ -L "Desktop" ]; then
  echo "참"
else 
  echo "거짓"
fi

4) -S
소켓파일이면 아니면 참 반환

if [ -S "Desktop" ]; then
  echo "참"
else 
  echo "거짓"
fi

5) -r
본인 권한이 r이면 참 반환

if [ -r "Desktop" ]; then
  echo "참"
else 
  echo "거짓"
fi

6) -w
본인 권한이 w이면 참 반환

if [ -w "Desktop" ]; then
  echo "참"
else 
  echo "거짓"
fi

7) -x
본인 권한이 x이면 참 반환

if [ -x "Desktop" ]; then
  echo "참"
else 
  echo "거짓"
fi

8) -s
크기가 0이 아니면 참 반환

if [ -s "Desktop" ]; then
  echo "참"
else 
  echo "거짓"
fi

9) 파일1 -nt 파일2
파일1이 파일2보다 최신파일이면 참 반환

if [ "Desktop" -nt ".ssh" ]; then
  echo "참"
else 
  echo "거짓"
fi

10) 파일1 -ot 파일2
파일1이 파일2보다 오래된파일이면 참 반환

if [ "Desktop" -ot ".ssh" ]; then
  echo "참"
else 
  echo "거짓"
fi

11) 파일1 -et 파일2
파일1이 파일2와 같은 파일이면 참 반환

if [ "Desktop" -ot ".ssh" ]; then
  echo "참"
else 
  echo "거짓"
fi

Leave a Comment