"${foo##*.}"構文はファイル拡張子をどのように取得しますか? [コピー]

このコマンドがファイル拡張子を正常に検索するのはなぜですか?

file_ext=${filename##*.}

ベストアンサー1

これはPOSIX シェルコマンド言語:

${parameter##word}

最大プレフィックスパターンを削除します。パターンを生成するには、単語を拡張する必要があります。次に、パラメータ拡張によって、プレフィックスの最大部分が削除されたパターンと一致するパラメータを生成する必要があります。

この特別な場合は、(すべての項目と一致)*.で終わる最大の部分文字列に展開され、最大の部分文字列が削除されます。そのため、ファイル拡張子だけが残ります。.*

ファイル名に含まれる内容がないと何も削除されませんので、.スクリプトで使用する際は注意してください。動作が予期したものと異なる場合があります。

おすすめ記事