bash 쉘 스크립트 특정 문자열이 포함되었는지 확인하는 방법
1
2
3
4
5
6
# python 예시
str = "Hello world"
if "world" in str :
print("Found 'world' string.")
else :
print("Not Found 'world' string.")
쉘 스크립트에서는 어떤 문자열에 특정 문자열이 포함되어있는지 확인하고 싶을 때 어떻게 해야할까?
첫 번째 방법, 와일드카드(wildcard, asterisk(*
)) 사용
if [[ "$str1" == *str2* ]]; then ... else ... fi
1
2
3
4
5
6
7
8
#!/bin/bash
str="Hello world"
if [[ "$str" == *world* ]]; then
echo "str contains 'world'"
else
echo "str does not contain 'world'"
fi
1
2
# Output
str contains 'world'
두 번째 방법, 정규 표현식 연산자(regex operator, =~
) 사용
if [[ "$str1" =~ str2 ]]; then ... else ... fi
1
2
3
4
5
6
7
8
#!/bin/bash
str="Hello world"
if [[ "$str" =~ world ]]; then
echo "str contains 'world'"
else
echo "str does not contain 'world'"
fi
1
2
# Output
str contains 'world'
주의사항
if 문에 중괄호를 두 개 사용해야 한다. ([[ ]]
)
하나([ ]
)만 사용하면 정상적으로 동작하지 않는다.
또 다른 방법들
- case 구문을 이용하는 방법
- grep 명령어를 이용하는 방법
- …
등 여러 방법이 있다. 이 방법들에 대해서는 참고 자료 링크에 자세히 나와있다.