bashのパラメータ展開いろいろ

知らなかったり忘れたりすると、ついbasenameやcutやsedを使ってしまうので、メモ。
これに$'\pattern'も合わせたら、それなりのことは出来そう。

${parameter##word}を使った前方最長一致除去

パスからディレクトリ部分を除去
${filename##*/}
※最長一致を使うのは、/foo/bar/baz.txt みたいなケースを想定して。

${parameter%word}を使った後方最短一致除去

ファイル名から拡張子を除去
${filename%.*}
※最短一致を使うのは、foo.bar.baz.txt みたいなケースを想定して。

${pattern:offset:length}

yyyy/mm/ddからyyyyを取得
${today:0:4}
※offsetは0始まり。また、最後まで取得する場合は、:lengthは不要。

${parameter//pattern/string}を使った文字列全置換

yyyy/mm/ddから"/"を除去
${today//\/}
※除去する場合には、/stringは不要。