쉘 스크립트에서 문자열을 와일드카드 문자열과 비교하는 방법은 무엇입니까?

쉘 스크립트에서 문자열을 와일드카드 문자열과 비교하는 방법은 무엇입니까?

ksh쉘 스크립트에서 파일 이름 문자열과 파일 마스크를 비교 하고 싶습니다 . 문법을 고쳐주실 수 있나요?

if [ "NPER20200422TEST.PTN" = "NPER*.PTN" ]
then
    echo "File matched"
else
    echo "File not matched"
fi

내 파일 문자열을 주어진 파일 마스크와 일치시키고 싶습니다.

답변1

사용하고 있는지 확인하세요.또는또는, 그 다음에

if [[ "NPER20200422TEST.PTN" == NPER*.PTN ]]

이중 대괄호 조건을 사용하고 특수 와일드카드 메타 문자는 따옴표를 해제해야 합니다.

답변2

Bourne과 유사한 셸인 include 에서 ksh이 구성은 다음과 같은 case용도로 사용됩니다.

case NPER20200422TEST.PTN in
  (NPER*.PTN) echo "File matched";;
  (*) echo "File not matched";;
esac

Bourne 쉘(많은 사람들이 계속 혼동하고 있지만 오늘날 더 이상 사용되지 않는 역사적인 쉘)에서는 s를 sh생략해야 합니다 . (의 표준(POSIX) 구현에서는 or 의 사용이 허용됩니다 (*).*)sh

답변3

an을 사용하여 명세서를 인쇄 echo하고 다음으로 파이프할 수 있습니다 grep.

if echo NPER20200422TEST.PTN | grep -q "NPER.*PTN"
then
  echo "File matched"
else
  echo "File not matched"
fi

grep -q출력을 생성하지 않습니다

관련 정보