if 블록의 패턴 일치

if 블록의 패턴 일치

if 블록을 통해 변수에 저장된 패턴을 일치시키려고 합니다. 내 이해에 따르면 이것은 일치해야 하며 "일치" 에코 문을 받아야 합니다. 그러나, 일치하지 않는 것 같습니다.

patern=EOD*psv
file=EOD_test_20160404.psv

if [[ $file == *"$patern" ]]
then
    echo "Match";
else
    echo "No Match";
fi

산출:

일치하지 않음

file변수 값이 지정된 패턴과 일치하지 않는 이유는 무엇입니까?

답변1

'==' 및 '!=' 연산자를 사용할 때 연산자 오른쪽의 문자열은 패턴으로 처리되어 아래 설명된 규칙에 따라 일치됩니다.패턴 매칭

따라서 패턴에 큰따옴표를 포함하면 bash는 파일 이름에서 이를 볼 것으로 예상합니다. 큰따옴표 및/또는 선행을 제거하면 *문제가 해결됩니다.

if [[ $file == $patern ]]
then
    echo "Match";
else
    echo "No Match";
fi

관련 정보