Bash Shell Script - 문자열 비교, 문자열 포함 여부 확인

By JS | Last updated: October 03, 2021

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

댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha