ファイル名ワイルドカードパターンを一致させるための代替の使用

ファイル名ワイルドカードパターンを一致させるための代替の使用
if [[ $1 == *.(png|jpg) ]]

これは私が試したことですが、うまくいきません。$1何かを行うには、このファイル名のサフィックスの1つと一致することを確認する必要があります。私は何をすべきかわかりません。先ほど入りましたbash。私はこれらすべてのフォーラムと他のフォーラムを検索しました。条件文に適した項目が見つかりませんでしたif

ベストアンサー1

@(this|that)マッチthisまたはthatKshスタイルの拡張グローブもBashでサポートされています。 Bashではshopt -s extglob。 Bashバージョン4.1以降、これらの機能はデフォルトで内部で有効になっています[[ ]]

shopt -s extglob # needed in bash-4.0 or older
if [[ $1 == *.@(jpg|png) ]]; then 
    echo match
else
    echo no match
fi

Zshでは*.(jpg|png)

標準shでは使用できますが、パターン全体をcase繰り返す必要があります。

case $1 in
    *.png|*.jpg) echo match;;
    *)           echo no match;;
esac

望むより:

おすすめ記事