저는 다양한 작업을 수행하는 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
.