본문 바로가기
IT/리눅스 쉘 스크립트

[shell script] 쉘 스크립트 기초 #5 - 조건문 if문 옵션 사용법 및 총정리

by 꾸꾸웍스 2022. 4. 27.
반응형

[shell script] 쉘 스크립트 기초 #5  - 조건문 if문 옵션 사용법 및 총정리


 


 

※ 목차

1. 쉘 스크립트(shell script) if문 문자열 비교 옵션
2. 쉘 스크립트(shell script) if문 산술 비교 옵션
3. 쉘 스크립트(shell script) if문 파일 조건 옵션

 


 

옵션에 대한 설명은 위 그림과 같은 조건으로 사용법을 설명하며 아래의 내용중 then을 포함한 나머지 내용은 생략합니다.

if [ 값1 조건 값2 ]
then
		명령
else
		명령
fi

 

 


 

1. 쉘 스크립트(shell script) if문 문자열 비교 옵션

 

  • 문자열을 기준으로 문자열을 서로 비교하거나 문자열자체를 조건으로 검사합니다.
번호 옵션 사용법 설명
1 없음 if [ 문자 ]  빈 문자열이 아니라면 참입니다.
2 = 또는 == if [ 문자 = 문자 ] 두 문자열이 같다면 참입니다.
3 != if [ 문자 != 문자 ] 두 문자열이 같이 않다면 참입니다.
4 -n if [ -n 문자 ] 문자열이 null(빈 문자열)이 아니라면 참입니다.
5 -z if [ -z 문자 ] 문자열이 null(빈 문자열) 이라면 참입니다.

 



 

2. 쉘 스크립트(shell script) if문 산술 비교 옵션

 

  • 산술을 비교하며 비교 대상은 왼쪽 기준으로 두 수의 값을 비교합니다.
  • and와 or의 비교구문에서는 조건을 1개 사용할 때와 2개 사용할때의 문법은 다르게 사용됩니다.(아래 설명 참고)
번호 옵션 연산자 사용법 설명
1 -eq = if [ 값1 -eq 값2 ] 두 값이 같다면 참입니다.
2 -ne != if [ 값1 -ne 값2 ] 두 값이 같지 않다면 참입니다.
3 -gt > if [ 값1 -gt 값2 ] 값1이 값2보다 크다면 참입니다.
4 -ge >= if [ 값1 -ge 값2 ] 값1이 값2보다 크거나 같다면 참입니다.
5 -lt < if [ 값1 -lt 값2 ] 값1이 값2보다 작으면 참입니다.
6 -le <= if [ 값1 -le 값2 ] 값1이 값2보다 작거나 같아면 참입니다.
7 -a and if [ 조건1 -a 조건2 ] 조건1과 조건2의 결과가 모두 참이여야 참입니다.
8 -o or if [ 조건1 -o 조건2 ] 조건1과 조건2의 결과 중 하나만 참이면 참입니다.

쉘 스크립트(shell script) if문 and 사용법

  • 위 옵션 설명 중 -a옵션은 and를 나타냅니다. 또한 && 기호와 같습니다.
  • 조건1과 조건2의 결과가 모두 참이여야 됩니다.
  • -a옵션을 사용하는 방법과 && 기호를 사용하는 2가지 방법이 존재합니다.
  • &&연산을 사용할때는 이중 대괄호를 사용하면 보기쉽게 구분할 수 있습니다.

 

  • 아래 예시는 산술비교 -eq의 옵션으로 1과 1이 같다는 조건2개를 and로 묶은 2개의 방법입니다.
if [ 1 -eq 1 -a 1 -eq 1 ]; then
        echo yes
else
        echo no

fi



if [[ 1 -eq 1 ]] && [[ 1 -eq 1 ]]; then
        echo yes
else
        echo no
fi

 


쉘 스크립트(shell script) if문 or 사용법

  • 위 옵션 설명 중 -o옵션은 or를 나타냅니다. 또한 || 기호와 같습니다.
  • 조건1과 조건2의 결과 중 하나만 참이여야 됩니다.
  • -o옵션을 사용하는 방법과 || 기호를 사용하는 2가지 방법이 존재합니다.
  • ||연산을 사용할때는 이중 대괄호를 사용하면 보기쉽게 구분할 수 있습니다.

 

  • 아래 예시는 산술비교 -eq의 옵션으로 1과 2이 같다는 조건 1개와
    -eq 옵션으로 1과 1이 같다는 조건1개를 서로 -or로 묶은 2개의 방법입니다.
    • || 연산자는 키보드의 엔터키 위에 'shift+\'를 입력하면 되고 리눅스에서는 파이프 기호라고 부릅니다.
if [ 1 -eq 2 -o 1 -eq 1 ]; then
        echo yes
else
        echo no

fi



if [[ 1 -eq 2 ]] || [[ 1 -eq 1 ]]; then
        echo yes
else
        echo no
fi

 


반응형

 

3. 쉘 스크립트(shell script) if문 파일 조건 옵션

 

  • 파일 조건은 파일의 존재여부 또는 파일에 대한 속성 값을 비교합니다.
  • 아래의 옵션은 모두 참인 경우를 나타내며 조건에서 거짓을 만들어 거짓을 참으로 만들 수 있습니다.
지정한 디렉토리에 디렉토리가 존재 하지 않으면 디렉토리를 만드는 if문

#!/bin/bash

DIR="/home/usergroup/apple"

if [ ! -d $DIR ]; then
	mkdir -p $DIR
fi
번호 옵션 사용법 설명
1 -b if [ -b 파일 ] 파일이 블럭 디바이스면 참입니다.
2 -c if [ -c 파일 ] 파일이 문자 디바이스면 참입니다.
3 -d if [ -d 파일 ] 파일이 디렉토이이면 참입니다.
4 -e if [ -e 파일 ] 파일이 존재하면 참입니다.
5 -f if [ -f 파일 ] 파일이 존재하고 정규파일이면 참입니다.
6 -g if [ -g 파일 ] 파일이 setgid이면 참. (파일 그룹 실행권한에 s가 있는 경우)
7 -G if [ -G 파일 ] 파일의 그룹이 현재 사용자 그룹이면 참입니다.
8 -h if [ -h 파일 ] 파일이 하드링크이면 참입니다.
9 -k if [ -k 파일 ] 파일이 Sticky bit이면 참. (파일 다른사용자 실행권한에 T가 있는 경우)
10 -L if [ -L 파일 ] 파일이 심볼릭 링크이면 참입니다.
11 -O if [ -O 파일 ] 파일의 소유자가 현재 사용자이면 참입니다.
12 -p if [ -p 파일 ] 파일 속성이 파이프이면 참입니다. ( prw-r--r-- )
13 -r if [ -r 파일 ] 현재 사용자가 읽을 수 있는 파일이면 참입니다.
14 -s if [ -s 파일 ] 파일이 비어있지 않으면 참입니다.
15 -S if [ -S 파일 ] 파일이 소켓 디바이스이면 참입니다.
16 -t if [ -t FD ] FD가 열려진 터미널이면 참입니다. (File Descriptor)
17 -u if [ -u 파일 ] 파일이 setuid이면 참. (파일 소유자 실행권한에 s가 있는 경우)
18 -w if [ -w 파일 ] 현재 사용자가 쓸 수 있는 파일이면 참입니다.
19 -x if [ -x 파일 ] 현재 사용자가 실행 할 수 있는 파일이면 참입니다.
20 -nt if [ 파일1 -nt 파일2 ] 파일1이 파일2보다 최근파일이면 참입니다.
21 -ot if [ 파일1 -ot 파일2 ] 파일1이 파일2보다 오래된 파일이면 참입니다.
22 -ef if [ 파일1 -ef 파일2 ] 파일1이 파일2보다 하드링크 파일이면 참입니다.

쉘 스크립트(shell script) if문 -u 옵션, -g 옵션, -k 옵션

  • setuid, setgid, sticky bit는 파일 특수권한으로 각각 소유자, 그룹, 다른사용자 실행권한에 x가 아닌 s 또는 t가 생깁니다. 예를 들어 setuid, setgid, sticky bit가 모두 부여되었다고 가정하면 -rwsr-sr-t 가되고 기존에 실행권한이 x가 부여되어있으면 소문자 s, 소문자t로 부여되고 실행권한이 없었다면 대문자 S, 대문자 T로 부여됩니다.
    자세한 내용은 아래 블로그를 참고하세요

                                                                   ↓↓링크↓↓
                                                       https://rhrhth23.tistory.com/37
 

[Linux] 리눅스 서버 기본 명령어 chmod 명령어 옵션 사용법 총정리

[Linux] 리눅스 서버 기본 명령어 chmod 명령어 옵션 사용법 총정리 ※ 목차 1. 리눅스 chmod 명령어란? 2. 리눅스 chmod 명령어 규칙 및 설명 3. 리눅스 chmod 명령어 옵션 4. 리눅스 chmod 명령어 옵..

rhrhth23.tistory.com

 

 


 

 


 

반응형
그리드형

댓글