IF 문의 여러 절을 사용하여 정규식 비교

IF 문의 여러 절을 사용하여 정규식 비교

저는 다양한 작업을 수행하는 bash 프로그램을 작성하고 있습니다. 문제를 일으킬 수 있는 IF 문이 있습니다. 아래 스크립트가 맞나요?

if [[ ! $description =~ "Design" ]] || [[ ! $description =~ "Digital" ]]; then

        echo 'Does not match Design or Digital'
else
        echo 'A match has been found'
fi

답변1

이 문제에 대한 해결책을 찾았습니다. steeldriver를 언급하셨듯이 구문적으로는 정확하지만 절의 연산자를 수정했습니다.

#/bin/bash

description="Advert"

if [[ $description =~ "Design" ]] || [[ $description =~ "Digital" ]]; then

    echo 'Matches Design or Digital'
else
    echo 'Does not match'
fi

제안해 주신 모든 분들께 감사드립니다!

답변2

출력 메시지가 원본 텍스트에서 정확하려면 첫 번째 에코가 다음과 같아야 합니다 Does not match Design *and* Digital. Digital Design예를 들어, 문자열에서 일치 항목이 발견되었습니다.


=~에서 정규식 연산자를 사용할 때 bash왼쪽은 인용 문자열이어야 하고 오른쪽은 일반적으로 인용 해제되어야 합니다.

#/bin/bash

description='Advert'

if [[ "$description" =~ Design  ]] ||
   [[ "$description" =~ Digital ]]; then
    echo 'Matches Design or Digital'
else
    echo 'Does not match'
fi

그건 중요하지 않아이것그러나 다음과 같은 상황에서 발생합니다.

description='Advert'

if [[ "$description" =~ "Ad.*" ]]; then
    echo 'Matches "Ad.*"'
else
    echo 'Does not match'
fi

그러면 인쇄됩니다 Does not match.

관련 정보