2012-02-20 10 views
1

私はBash case文のファイル拡張子パターンと一致するようにしています。Bash - case文のパターンマッチファイル拡張子

は、これまでのところ私は、しかし、私はファイル拡張子のためのパターンとのトラブルを抱えています、

case ${myArray[count]} in 

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

esac 

CODEのためのパターンマッチが機能/(\.).{3}/:を試してみました。私は@で正規表現を(ラップ場合@(/(\.).{3}/)パターンはどちらか一致しないなど)予期しないトークン近く

構文エラー `(」

おかげ

答えて

2
を: 上記でエラーが発生します。

正規表現を使用しない場合文でパターンマッチングマニュアルページから:。

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文の緩やかなグロブに基づいてさらに正規表現チェックを行う必要があります。

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これは、ケースステートメント+1のパターンマッチングが良いでしょう。 – jordanm