[shell script] 쉘 스크립트 기초 문법 - 조건문 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문 규칙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
아래는 예시입니다.
### 조건 숫자를 사용
if [ 1 -eq 1 ]
### 조건 문자를 사용
if [ "apple" == "apple" ]
### 조건 명령어를 사용
if [ `ls | wc -l` == 1 ]
### 조건 변수를 사용
A=1
B=1
if [ $A == $B ]
쉘 스크립트(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
위 기본 사용법에서 else만 추가된 것으로 대괄호 조건을 비교하여 참인 경우는 then의 A명령어가 실행되고
대괄호 조건이 거짓인 경우 else의 B명령어가 실행됩니다.
shell if문 문법3 - elif 다중 조건
if문은 하나의 조건으로 참과 거짓의 계산 수행을 하지만 하나의 조건이 아닌 여러 개의 조건으로 참과 거짓의 계산 수행을 할 수 있습니다. 다중 조건은 2개 이상 여러 개를 사용할 수 있습니다.
if [ 값1 조건 값2 ]
then
elif [ 값1 조건 값2 ]
then
명령어
else
명령어
fi
'IT > 리눅스 쉘 스크립트' 카테고리의 다른 글
[shell script] 쉘 스크립트 기초 #6 - 반복문 for문 개념 및 사용법 (0) | 2022.05.10 |
---|---|
[shell script] 쉘 스크립트 기초 #5 - 조건문 if문 옵션 사용법 및 총정리 (0) | 2022.04.27 |
[shell script] 쉘 스크립트 기초#3, 기초 예제 - 변수 사용 예제 (1) | 2022.04.18 |
[shell script] 쉘 스크립트 기초 #2, 기초 문법 - 변수 선언, 변수 호출 (0) | 2022.04.09 |
[shell script #1] 리눅스 쉘 스크립트 실행 sh 파일 만들기 (0) | 2022.04.07 |
댓글