if문에서 어떤 문자열이 다른 문자열에서 포함되었는지 확인할 때, 어떻게 구현하는지 알아보겠습니다.

이 글의 예제들은 Ubuntu 20.04에서 Bash shell을 사용하여 작성되었습니다.

1. [[ string1 =~ string2 ]]으로 문자열 포함 확인

[[ string1 =~ string2 ]]를 사용하여 string에 string2가 포함되어있는지 확인할 수 있습니다.

아래 예제는 string 문자열에 pattern 문자열이 포함되어있는지 확인하는 예제입니다.

#!/bin/bash

string="Hello, World"
pattern="World"

if [[ "$string" =~ "$pattern" ]]; then
    echo "문자열에 '$pattern'이 포함됩니다."
else
    echo "문자열에 '$pattern'이 포함되지 않습니다."
fi

Output:

$ bash example.sh
문자열에 'World'이 포함됩니다.

if문에 문자열을 직접 입력하여 포함 확인

만약 문자열 변수와 비교하지 않고, 직접 if문에 문자열을 입력하여 비교하려면, 아래와 같이 비교하시면 됩니다.

#!/bin/bash

string="Hello, World"

if [[ "$string" =~ "World" ]]; then
    echo "문자열에 'World'가 포함됩니다."
else
    echo "문자열에 'World'가 포함되지 않습니다."
fi

Output:

$ bash example.sh
문자열에 'World'가 포함됩니다.

’==‘를 이용한 방법

==를 이용하여 비교할 수도 있습니다.

아래 코드들은 모두 string에 문자열 “World”가 포함되어있는지 확인하는 코드입니다. 비교하는 문자열에 ""를 추가해도 되고 안해도 됩니다.

  • if [[ "$string" == *World* ]]; then
  • if [[ "$string" == *"World"* ]]; then

아래와 같이 확인해볼 수 있습니다.

#!/bin/bash

string="Hello, World"

if [[ "$string" == *World* ]]; then
    echo "문자열에 'World'가 포함됩니다."
else
    echo "문자열에 'World'가 포함되지 않습니다."
fi

Output:

$ bash example.sh
문자열에 'World'가 포함됩니다.

2. substring을 이용하여 포함 여부 확인

substring은 문자열을 자르는 것을 의미하는데, substring과 관련된 ${string#*$pattern} 구문을 이용하여 문자열 포함 여부를 확인할 수 있습니다.

  • ${string#*$pattern} : string에서 pattern을 찾고 그 이후의 문자들을 모두 제거합니다. 만약 문자열에서 pattern이 없다면, 아무것도 제거되지 않고, string과 동일한 문자열이 리턴됩니다. 이것을 이용하여 문자열이 포함되었는지 확인할 수 있습니다.
#!/bin/bash

string="Hello, World"
pattern="World"
echo "${string#*$pattern}"
if [ "${string#*$pattern}" != "$string" ]; then
    echo "문자열에 '$pattern'이 포함됩니다."
else
    echo "문자열에 '$pattern'이 포함되지 않습니다."
fi

Output:

$ bash example.sh
문자열에 'World'이 포함됩니다.