Bash에서 문자열을 비교하는 방법
다양한 비교 연산자를 사용하여 문자열을 비교하고 정규식을 사용하여 문자열에 하위 문자열이 포함되어 있는지 여부를 확인할 수 있습니다.
Bash의 문자열 비교
문자열 비교는 주어진 문자열이 동일한 지 여부를 확인하는 것을 의미합니다. 길이가 같고 동일한 문자 시퀀스를 포함하는 경우 둘 이상의 문자열은 동일합니다.
조건에 따라 true 또는 false를 반환하는 다양한 문자열 비교 연산자를 사용합니다. 널리 사용되는 문자열 비교 연산자 중 일부는 다음과 같이 나열 될 수 있습니다.
string1 = string2 |
[명령과 함께 사용되는 같음 연산자이며 두 피연산자가 같으면true를 반환합니다. |
string1 == string2 |
[[명령과 함께 사용되는 같음 연산자이며 두 피연산자가 같으면true를 반환합니다. |
string1 != string2 |
두 피연산자가 같지 않으면 true를 반환하는 부등식 연산자입니다. |
string1 =~ regex |
string1이 확장regex와 일치하면true를 반환하는Regex 연산자 |
string1 > string2 |
사전 순 (알파벳순)에 따라string1이string2보다 큰 경우true를 반환하는보다 큼 연산자 |
string1 < string2 |
사전 순 (알파벳순)에 따라string1이string2보다 작은 경우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.
여기에서 처음에=연산자를 사용하여String1과String2를 비교하면. String1과String2는 동일한 문자 순서로 길이가 같으므로 비교 연산자는true를 반환하므로 첫 번째if-else 블록의 출력으로String1 and String2 are equal.를 얻습니다. 프로그램의.
마찬가지로 두 번째 프로그램에서는==연산자를 사용하여String1과String2를 비교합니다. 이 경우 비교를 위해[[를 사용해야합니다.
마지막으로!=연산자를 사용하여String1과String3을 비교합니다.
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.
이 프로그램에서name1과name2는 사전 식으로 비교됩니다. K는 알파벳 순서로 A뒤에 오므로 K는 A보다 높은 값을 가지므로 "$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 is a backend software engineer at Matrice.ai.
LinkedIn