Linux의 Bash 쉘 스크립트에서 두개의 문자열이 같은지 비교하는 방법과 특정 문자열이 포함되어있는지 확인하는 방법을 알아보겠습니다.
1. 문자열 동등 비교
기본적으로 ==
연산자로 두개의 문자열이 같은지 비교할 수 있습니다.
#!/bin/bash
str1="Hello"
str2="World"
if [ $str1 == $str2 ]
then
echo "Equal"
else
echo "Not Equal"
fi
Output:
$ bash example.sh
Not Equal
그런데, 위의 코드는 어떤 문자열의 길이가 0일 때, 즉 Empty일 때 에러가 발생할 수 있습니다.
예를 들어, 다음 코드를 실행시키면 조건문에서 unary operator expected
에러가 발생합니다.
#!/bin/bash
str1="Hello"
str2=""
if [ $str1 == $str2 ]
then
echo "Equal"
else
echo "Not Equal"
fi
Output:
$ bash example.sh
ex_string_com.sh: line 7: [: Hello: unary operator expected
Not Equal
1.1 안전하게 문자열 비교
Emtpy String으로 에러가 발생하지 않는, 안전하게 문자열을 비교하려면 다음과 같이 변수를 ""
으로 감싸주면 됩니다. 그럼 한쪽이 Empty라도 [ "$str1" == "" ]
와 같은 형태로 비교하여 문제가 발생하지 않습니다.
#!/bin/bash
str1="Hello"
str2=""
if [ "$str1" == "$str2" ]
then
echo "Equal"
else
echo "Not Equal"
fi
Output:
$ bash example.sh
Not Equal
1.2 변수가 특정 문자열인지 확인
변수가 특정 문자열인지 확인하려면, 다음과 같이 변수 대신 문자열과 비교하면 됩니다.
#!/bin/bash
str1="Hello"
if [ "$str1" == "Hello" ]
then
echo "Hello"
else
echo "Not Hello"
fi
Output:
$ bash example.sh
Hello
2. 특정 문자열이 포함되어있는지 확인
아래 두가지 방법으로 문자열에 특정 문자열이 포함되어있는지 확인할 수 있습니다.
[[ "$STRING1" == *STRING2* ]]
[[ "$STRING1" =~ STRING2 ]]
2.1 예제 1
#!/bin/bash
str='This is the shell script example.'
if [[ "$str" == *shell* ]]; then
echo "It contains 'shell'"
fi
Output:
$ bash example.sh
It contains 'shell'
2.1 예제 2
#!/bin/bash
str='This is the shell script example.'
if [[ "$str" =~ "shell" ]]; then
echo "It contains 'shell'"
fi
Output:
$ bash example.sh
It contains 'shell'
3. 문자열이 Empty인지 확인
[ -z $STRING ]
에서 -z
는 문자열의 길이가 0일 때 True를 리턴하는 테스트 연산자입니다.
#!/bin/bash
str1=""
if [ -z $str1 ]
then
echo "Empty string"
else
echo "Not empty string"
fi
Output:
$ bash example.sh
Empty string
References
Loading script...
Related Posts
- Bash Shell - 문자열에서 마지막 문자 N개 제거
- Bash Shell - 문자열에서 첫번째 문자 N개 제거
- Bash Shell - 실행 시간 측정 방법
- Bash Shell - 나눗셈에서 버림, 올림, 반올림 처리
- Bash Shell - 숫자가 양수인지 음수인지 확인하는 방법
- Bash Shell - 자신의 스크립트 파일 이름 가져오기
- Bash Shell - 문자열 출력 방법(echo, printf)
- Bash Shell - seq 명령어로 반복문 구현 및 예제
- Bash Shell - File 테스트 연산자
- Bash Shell - 무한 루프 (Infinite loop)
- Bash Shell - 숫자 비교 연산자
- Bash Shell - 문자열 비교 연산자
- Bash Shell - 대문자, 소문자로 변환 (Uppercase, Lowercase)
- Bash Shell - 스트립트를 root로 실행했는지 확인
- Bash Shell - 명령어 실행 결과를 변수에 저장
- Bash Shell - select로 선택 메뉴 구현
- Bash Shell - 변수가 정의되었는지 확인하는 방법
- Bash Shell - sleep 함수, 특정 시간 멈추기
- Bash Shell - 파일이 존재하는지 확인
- Bash Shell - 문자열 자르기 (substring, split)
- Bash Shell - 날짜, 시간 가져오기
- Bash Shell - Case 조건문
- Bash Shell - 파일 읽는 방법
- Bash Shell - 사용자로부터 입력 받기
- Bash Shell - 문자열을 연결하는 방법
- Bash Shell - 파일 생성 및 문자열 추가
- Bash Shell - 숫자 변수 증가/감소 시키기
- Bash Shell - 배열 할당, 길이, 객체 포함 여부 확인
- Bash Shell - 문자열 비교, 문자열 포함 여부 확인
- Bash Shell - 변수 선언, 할당
- Bash Shell - 조건문(if-else)
- Bash Shell - 숫자 연산 (더하기, 빼기, 곱하기, 나누기)
- Bash Shell - 반복문(for, while, until loop)
- Bash Shell - Command Line으로 전달된 인자 받기
- Bash Shell - 함수(Function)