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