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

Suraj Joshi 2020년9월27일
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.이 출력으로 나타납니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn