2012-02-20 2 views
1

Bash case 문에서 파일 확장자 패턴과 일치하는 것을 찾고 있습니다.Bash - case 문에서 패턴 일치 파일 확장자

은 지금까지 나는 그러나 내가 파일 확장자에 대한 패턴에 문제가 있어요

case ${myArray[count]} in 

*CODE*) $codeFound[count]=${myArray[count]};; 
/(\.).{3}/) $extensionFound[count]=${myArray[count]};; 

esac 

코드에 대한 패턴 일치가 작동 /(\.).{3}/:을 시도했습니다. 위의 오류가 발생합니다 :. 예기치 않은 토큰 근처

구문 오류 '('

내가 @의 정규식 (포장하는 경우) 예를 들어 @(/(\.).{3}/) 패턴 중 하나를 일치하지 않습니다를

감사를

답변

2

case 문에 일치하는 패턴은 정규 표현식을 사용하지 않는 맨 페이지에서 :.

A case command first expands word, and tries to match it against
each pattern in turn, using the same matching rules as for path‐
name expansion (see Pathname Expansion below).

당신은 eith합니다 어쩌면 if 문 블록을 사용해야하거나 case 문에서 느슨한 glob을 기반으로 한 정규식 검사를 추가로 수행해야합니다.

case ${myArray[count]} in 

*CODE*) 
    $codeFound[count]=${myArray[count]};; 
*.*) 
    if [[ ${myArray[count]} =~ \..{3} ]]; then 
     $extensionFound[count]=${myArray[count]} 
    fi;; 

esac 
+4

경로 이름 확장 – user123444555621

+0

과 같이'. ???)'를 사용할 수도 있습니다. – ctdeveloper

+1

@ Pumbaa80 case 문 +1에 더 적합한 패턴 일치입니다. – jordanm

관련 문제