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

[shell script] 쉘 스크립트 기초 #4 - 조건문 if문 개념 규칙 및 문법

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

[shell script] 쉘 스크립트 기초 문법 - 조건문 if문 개념 규칙 및 문법


shell if문 썸네일
shell if문 기초

 

※ 목차 구성
1) 쉘 스크립트(shell script) if문이란?
2) 쉘 스크립트(shell script) if문 규칙
   - shell if 띄어쓰기, 이중 대괄호, 정수형 문자형 비교, 변수 및 문자 숫자 사용
3) 쉘 스크립트(shell script) if문 문법
   - shell if 기본 사용법, then else 조건, elif 다중 조건

 

 

반응형

 

쉘 스크립트(shell script) if문이란?

리눅스 쉘 스크립트 if문(linux shell script if)은 리눅스 프롬프트 및 쉘 스크립트에서 사용할 수 있는 자료형 비교 구문으로 참인지 거짓인지에 따라 계산을 하여 출력 값을 설정할 수 있습니다. 상황에 따라 무한정으로 사용할 수 있고 기본적으로 shell if는 쉘 스크립트에서 가장 많이 사용하고 기본적으로 사용하는 것이므로 기본적인 규칙과 문법을 파악하면 쉽게 응용할 수 있습니다.

  • if문은 조건문 중 하나이며 자료형 조건이 참인지 거짓인지에 따라 달라지는 계산이나 상황을 수행하는 것
  • 쉘 스크립트의 if문은 shell(쉘)을 이용해 script(스크립트) 파일을 작성하는데 조건(if문)을 포함하여 작성하는 것
  • c언어 기반으로 만들어진 shell(쉘)의 if문은 다른 언어와 달리 단순한 구조로도 파일을 작성할 수 있습니다.

 

 

쉘 스크립트(shell script) if문 규칙

shell if문 규칙1 - 띄어쓰기

if문의 기본 문법 사용 시 제일 중요하게 지켜야 될 규칙은 띄어쓰기입니다.

if [ 조건1 기호 조건2 ]

아래 그림처럼 띄어쓰기의 규칙을 지키지 않을 시 오류라 판단하여 에러가 발생합니다.

shell if문 규칙 띄어쓰기 사진
shell if 규칙 띄어쓰기

 

shell if문 규칙2 - 줄 바꿈은 사용자 편의를 위함

프롬프트 또는 vi 편집기에서의 명령은 한 줄 한 줄 실행되기 때문에 줄 바꿈을 하지 않아도 세미콜론(;)으로 한 줄로 작성 가능합니다. 줄 바꿈을 하는 이유는 간단한 코드 작성은 줄 바꿈을 하지 않아도 되지만 코드가 길어져서 한 줄로 작성하게 되면 오류의 가능성이 커지기 때문에 사용자가 보기 편하기 위해서 줄 바꿈을 합니다. 아래 2개의 예시는 모두 같은 과정과 결과값을 가집니다.

 

세미콜론을 사용하여 if문 한 줄로 작성

세미콜론( ; )은 C언어의 구문이 끝날 때 사용합니다.

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

세미콜론 사용하지 않고 if문 줄 바꿈으로 작성

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

 

shell if문 규칙3 - 이중 대괄호

if [[ 값 조건 값 ]]

대괄호 1쌍은 별도의 프로세스를 /usr/bin/[ 에서 실행하여 조건의 결과를 얻지만 대괄호 2쌍은 bash 자체적으로 실행하기 때문에 많은 반복적인 수행을 해야 된다면 대괄호 2쌍을 쓰는 것이 별도의 프로세스를 만들지 않고 효과적인 작업을 수행할 수 있다.

 

if [[ 1 -eq 1 ]] && [[ 1 -ne 2 ]]

위 예시처럼 이중으로 조건을 사용할 때 구분하기 위해 사용하기도 합니다.

 

 

shell if문 규칙4 - 비교 정수형 문자형

조건문 if문에서 대괄호 안에 들어가는 조건을 비교하는 조건은 문자형과 정수형을 구분해주어야 합니다. 예를 들어 문자가 같은지 비교를 할 때 숫자를 비교할 수 있는 기호를 사용할 시 아래처럼 integer expression expected 오류가 발생합니다.

./script.sh: line 6: [: good: integer expression expected

위의 내용은 script.sh 스크립트 파일에 문자형 변수를 good이라고 지정하고 두 문자형 변수를 정수형 비교할 때 사용하는 -eq를 사용하여 비교한 결과 스크립트 파일에 에러 메시지가 출력되었습니다.

### 문자형 변수를 정수형 비교 기호를 사용
user@server # cat -n script.sh
     1  #!/bin/bash
     2
     3  A="good"
     4  B="good"
     5
     6  if [ $A -eq $B ]; then
     7          echo yes
     8  else
     9          echo no
    10  fi

### 스크립트 에러 메세지 출력
user@server # ./script.sh
./script.sh: line 6: [: good: integer expression expected
no

### 문자형 변수를 문자형 비교 기호를 사용
user@server # cat -n script.sh
     1  #!/bin/bash
     2
     3  A="good"
     4  B="good"
     5
     6  if [ $A == $B ]; then
     7          echo yes
     8  else
     9          echo no
    10  fi

### 스크립트 정상 출력
user@server # ./script.sh
yes

 

shell if문 규칙5 - 값에 변수 및 문자 숫자 사용

if문 조건을 작성할 때 변수를 이용할 수 있고 숫자, 문자 또는 명령어를 직접 입력할 수 있습니다. 작성 규칙은 변수 할당과 같으며 아래 링크를 참고하시기 바랍니다.

 

https://rhrhth23.tistory.com/24

 

[shell script] 쉘 스크립트 기초 #2, 기초 문법 - 변수 선언, 변수 호출

[shell script] 쉘 스크립트 기초 문법 - 변수 선언, 변수 호출 ※ 목차 1. 쉘 스크립트에서 변수(Variable) 란??? 2. 쉘 스크립트 변수 기초 문법 및 주의사항 3. 변수 할당 - 숫자 4. 변수 할당 - 문자 5. 변

rhrhth23.tistory.com

 

아래는 예시입니다.

### 조건 숫자를 사용
if [ 1 -eq 1 ]

### 조건 문자를 사용
if [ "apple" == "apple" ]

### 조건 명령어를 사용
if [ `ls | wc -l` == 1 ]

### 조건 변수를 사용
A=1
B=1
if [ $A == $B ]

 

 

300x250

 

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

shell if문 문법1 - 기본 사용법

if문의 기본 사용법은 아래와 같고 if문을 종료 시 if를 거꾸로 작성합니다.

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

 

위 설명은 아래 표와 같습니다.

문법 설명
if if문 시작의 선언을 의미합니다.
[ 값1 조건 값2 ] 조건은 대괄호( [ ] )로 정의하며 대괄호 안의 값1 기준으로 비교합니다.
then 대괄호 안에 조건을 비교하여 참인 경우 다음 줄을 명령하는 구문 선택사항 입니다.
명령줄 실제로 조건이 참일 경우 실행되는 명령줄 입니다.
fi if문 종료의 선언을 의미합니다.

 

 

shell if문 문법2 - then, else 참과 거짓의 조건 사용

if문은 위 기본 사용법처럼 참일 경우에도 사용할 수 있지만 else를 사용하는 습관을 들여야 쉘 스크립트 파일을 작성하고 실행하였을 때 오류 및 에러를 검출하고 줄일 수 있습니다.

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

shell if문 알고리즘 사진
shell if문 알고리즘

 

위 기본 사용법에서 else만 추가된 것으로 대괄호 조건을 비교하여 참인 경우는 then의 A명령어가 실행되고
대괄호 조건이 거짓인 경우 else의 B명령어가 실행됩니다.

 

shell if문 문법3 - elif 다중 조건

if문은 하나의 조건으로 참과 거짓의 계산 수행을 하지만 하나의 조건이 아닌 여러 개의 조건으로 참과 거짓의 계산 수행을 할 수 있습니다. 다중 조건은 2개 이상 여러 개를 사용할 수 있습니다.

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

 

 

반응형
그리드형

댓글