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