관리 메뉴

IT창고

쉘 스크립트 if문 1 본문

프로그래밍/Shell Script

쉘 스크립트 if문 1

방구석여포 2020. 10. 10. 01:48

이전에 쉘 스크립트의 기초에 대해 알아보았는데 이번에는 쉘 스크립트의 if문에 대해 알아보도록 하겠습니다.

 

스크립트는 위에서 아래로 순차적으로 명령이 실행되는데 if, for문 같은 조건식을 사용하면 조건에 따라 일부 명령어를 건너뛰는 등 스크립트가 제어하는게 가능해집니다.

 

쉘 스크립트에서 사용되는 if문의 구문은 아래와 같습니다.

# if-then

if [ 1 조건 2  ]; then

  command

fi

위와 같이 기본 형식이며 아래와 같이 단순히 사용이 가능합니다. 

위의 사진에 출력된 쉘 스크립트의 소스코드는 아래와 같습니다.

#!bin/bash 

if ls -l / ; then 
  echo "루트 디렉토리 현황" 
fi 

#쉘 스크립트 if문 테스트

if문 안에는 조건식 없이 명령어만 넣어서 단순하게 사용이 가능합니다. 

이번에는 조건식을 사용해보도록 하겠습니다.

위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.

#!bin/bash

if [ 1 -gt 2 ]; then 
  echo "1번 참"
 else
  echo "2번 거짓"
fi


위의  if문의 조건식을 보면 1 > 2로 참일 경우 1번 거짓일 경우 2번의 echo 명령어가 사용되는걸 확인할 수 있습니다.

조건식을 보면 1 > 2 가 아닌 1 -gt 2로 되어있는데 비교하는 숫자, 문자열에 따라 사용되는 조건식이 다릅니다. 

조건식은 아래에 내용을 참고 합니다. 

숫자 비교 조건식 설명
1 -eq 2 1 과 2가 같은지 확인 ( 1 = 2 )
1 -ge 2 1 과 2가 크거나 같은지 확인 ( 1 >= 2 )
1 -gt 2 1 과 2가 큰지 확인 ( 1 > 2 )
1 -le 2 1 과 2가 작거나 같은지 확인 ( 1 <= 2 )
1 -lt 2 1 과 2가 작은지 확인 ( 1 < 2 )
1 -ne 2 1 과 2가 다른지 확인 ( 1 != 2 )
문자열 비교 조건식 설명
A < B A 가 B 보다 작은지 확인
A  > B A 가 B 보다 큰지 확인
A = B A 와 B가 같은지 확인
A != B A 와 B가 다른지 확인
-n str 문자열(str) 길이가 0보다 큰지 확인
-z str 문자열(str) 길이가 0인지 확인

조건식은 위와 같이 참고하여 if문에 적용하면 됩니다. 

태스트 삼아 문자열 if문을 확인해보도록 하겠습니다.

위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.

#!bin/bash

if [ -z gsk123 ]; then
  echo "1번 참"
 else
  echo "2번 거짓"
fi

echo ""
if [ -z ]; then
  echo "1번 참"
 else
  echo "2번 거짓"
fi

 

문자열 비교식인 -z을 사용하여 문자열을 넣은것과 넣지 않는것 두가지를 비교해보았습니다.

결과 화면을 확인해보면 차이를 쉽게 확인해볼 수 있습니다.

 

마지막으로 숫자나 문자열이 아닌 리눅스의 파일을 비교하는 조건식을 확인해보도록 하겠습니다. 

위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.

#!bin/bash

if [ -d /testgsk3/  ]; then
  echo "1번 참"
 else
  echo "2번 거짓"
fi

echo ""
if [ -f /testgsk3/test.sh ]; then
  echo "1번 참"
 else
  echo "2번 거짓"
fi

echo ""
if [ -f /testgsk3/gsk.sh ]; then
  echo "1번 참"
 else
  echo "2번 거짓"
fi

3가지의 if문이 있으며 -d 조건식은 해당 디렉토리가 존재하는지 확인하며 -f 조건식은 파일이 존재하고 정규파일일 경우를 확인합니다. 첫번째 if문은 해당 디렉토리가 있기에 참이며 두번쨰 if문은 해당 디렉토리 경로에 test.sh 파일이 있기에 참이며 세번쨰 if문은 gsk.sh파일이 없기에 거짓입니다. 파일비교 조건식은 아래와 같습니다.

파일 비교 조건식 설명
-d file 디렉토리가 존재 하는지
-f file 파일이 존재하며 정규파일인지 
-e file 파일이 존재하는지
-s file 파일이 크기가 0보다 큰지
-L file 파일이 심볼릭 파일인지
-x file 파일을 실행할수있는지
-O file 파일의 소유자가 현재사용자인지
-G file 파일의 그룹이 현재 사용자의 그룹인지 
file1 -nt file2 file1이 file2 보다 최신의 파일인지
file1 -ot file2 file1이 file2 보다 오래된 파일인지

 

'프로그래밍 > Shell Script' 카테고리의 다른 글

쉘 스크립트 for문  (0) 2020.11.03
쉘 스크립트 if문 3  (0) 2020.10.19
쉘 스크립트 if문 2  (0) 2020.10.17
쉘 스크립트 기초 2  (0) 2020.10.07
쉘 스크립트 기초 1  (0) 2020.10.06
Comments