HOWTO · Linux
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.이 출력으로 나타납니다.