シェルスクリプトで見つけた次の正規表現について、私はかなり混乱しています。
${0##*/}
${0%/*}
それらはどのように機能しますか?
これらは正規表現ではなく、Bashのパラメーター展開の例です。その値による変数または特殊パラメーターの置換。 Wooledge Wikiには 良い説明 があります。
基本的に、あなたが持っている例では、${0##*/}
は次のように変換されます:
変数$ 0とパターン '/'の場合、2つのハッシュはパラメーターのbeginningからの平均であり、最長(または貪欲)一致を削除します—パターンまで。
したがって、$0
がファイルの名前、たとえば$HOME/documents/doc.txt
の場合、パラメータは次のように展開されます:doc.txt
同様に、${0%/*}
の場合、パターン/
はパラメーター(the %
)のendと照合されます。最短または貪欲でない一致が削除された状態で–上記の例では$HOME/documents
になります。
Bash Hacker's Wiki に関する記事も参照してください。