Bash에서 문자열을 비교하는 방법

Suraj Joshi 2020년9월27일 Linux Bash Linux String
Bash에서 문자열을 비교하는 방법

다양한 비교 연산자를 사용하여 문자열을 비교하고 정규식을 사용하여 문자열에 하위 문자열이 포함되어 있는지 여부를 확인할 수 있습니다.

Bash의 문자열 비교

문자열 비교는 주어진 문자열이 동일한 지 여부를 확인하는 것을 의미합니다. 길이가 같고 동일한 문자 시퀀스를 포함하는 경우 둘 이상의 문자열은 동일합니다.

조건에 따라 true 또는 false를 반환하는 다양한 문자열 비교 연산자를 사용합니다. 널리 사용되는 문자열 비교 연산자 중 일부는 다음과 같이 나열 될 수 있습니다.

string1 = string2 [명령과 함께 사용되는 같음 연산자이며 두 피연산자가 같으면true를 반환합니다.
string1 == string2 [[명령과 함께 사용되는 같음 연산자이며 두 피연산자가 같으면true를 반환합니다.
string1 != string2 두 피연산자가 같지 않으면 true를 반환하는 부등식 연산자입니다.
string1 =~ regex string1이 확장regex와 일치하면true를 반환하는Regex 연산자
string1 > string2 사전 순 (알파벳순)에 따라string1string2보다 큰 경우true를 반환하는보다 큼 연산자
string1 < string2 사전 순 (알파벳순)에 따라string1string2보다 작은 경우true를 반환하는 Less than 연산자
-z string string의 길이가0이면true를 반환합니다.
-n string string의 길이가0이 아니면true를 반환합니다.
String1="Hello World!!"
String2="Hello World!!"

String3="Delft Stack"

if [ "$String1" = "$String2" ]; then
    echo "String1 and String2 are equal."
else
    echo "String1 and String2 are not equal."
fi

if [[ "$String1" == "$String2" ]]; then
    echo "String1 and String2 are equal."
else
    echo "String1 and String2 are not equal."
fi

if [[ "$String1" != "$String3" ]]; then
    echo "String1 and String3 are not equal."
else
    echo "String1 and String3 are equal."
fi

출력:

String1 and String2 are equal.
String1 and String2 are equal.
String1 and String3 are not equal.

여기에서 처음에=연산자를 사용하여String1String2를 비교하면. String1String2는 동일한 문자 순서로 길이가 같으므로 비교 연산자는true를 반환하므로 첫 번째if-else 블록의 출력으로String1 and String2 are equal.를 얻습니다. 프로그램의.

마찬가지로 두 번째 프로그램에서는==연산자를 사용하여String1String2를 비교합니다. 이 경우 비교를 위해[[를 사용해야합니다.

마지막으로!=연산자를 사용하여String1String3을 비교합니다.

Bash의 사전 비교

사전 비교는 알파벳 순서에 따라 문자열을 비교하는 것을 의미합니다. 사전 식 비교를 위해><연산자를 사용합니다.

name1="Kamal"
name2="Abinash"


if [[ "$name1" > "$name2" ]]; then
    echo "${name1} is greater then ${name2}."
elif [[ "$name1" < "$name2" ]]; then
    echo "${name2} is greater than ${name1}."
else
    echo "Both the namees are equal"
fi

출력:

Kamal is greater then Abinash.

이 프로그램에서name1name2는 사전 식으로 비교됩니다. K는 알파벳 순서로 A뒤에 오므로 KA보다 높은 값을 가지므로 "$name1" > "$name2"true를 반환하고Kamal is greater then Abinash.를 출력으로.

문자열이 비어 있는지 확인

-n-z 연산자를 사용하여 문자열이 비어 있는지 확인합니다.

String=""
if [[ -z $String ]]; then
  echo "The variable String is an empty string."
fi

출력:

The variable String is an empty string.

이 프로그램에서String은 빈 변수입니다. -z 연산자는string의 길이가0이면true를 반환하므로 주어진 프로그램의 출력으로The variable String is an empty string.을 얻습니다.

String="Test"
if [[ -n $String ]]; then
  echo "The variable String is not an empty string."
fi

출력:

The variable String is not an empty string.

이 프로그램에서String은 빈 변수가 아닙니다. -n 연산자는string의 길이가0이 아니면true를 반환하므로 주어진 프로그램의 출력으로The variable String is not an empty string.을 얻습니다.

문자열에 하위 문자열이 포함되어 있는지 확인

문자열에 하위 문자열이 포함되어 있는지 확인하려면=~(Regex) 연산자를 사용할 수 있습니다.

regex 연산자는string이 확장regex 표현식과 일치하면true를 반환합니다. 비교를 위해 적절한regex 표현식을 만들어야합니다.

String='My name is Delft.'
if [[ $String =~ .*Delft.* ]]; then
  echo "The given string has Delft on it."
fi

출력:

The given string has Delft on it.

여기서.*Delft.*는 일치시킬regex 표현식으로,Delft. 앞뒤의 모든 문자열, 0 개 이상의 문자와 일치합니다. 문자열에 Delft하위 문자열이 있는지 확인합니다.

주어진 문자열에 Delft가 존재하므로 주어진 조건이 만족되고 The given string has Delft on it.이 출력으로 나타납니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn