100回ぐらいググっているやつ。bashにある変数展開は多機能だがその中でもたまにつかう置換機能の紹介です。
記法 | 概要 |
---|---|
${変数#パターン} | 文字列先頭の最短マッチ部分を削除 |
${変数##パターン} | 文字列先頭の最長マッチ部分を削除 |
${変数%パターン} | 文字列末尾の最短マッチ部分を削除 |
${変数%%パターン} | 文字列末尾の最長マッチ部分を削除 |
${変数/検索文字列/置換文字列} | 最初にマッチしたもののみ文字列を置換 |
${変数//検索文字列/置換文字列} | 全ての文字列を置換 |
文字列末尾の最短マッチ部分を削除
%移行のパターンに一致した場合に削除する。拡張子の削除なんかで使えたりする
$ echo $A 11122233344411122233 $ echo ${A%333} 111222333444111222 ### こんな感じで使えば拡張子の削除や変更を行える $ for i in *.py; do mv ${i} ${i%.py} ; done
文字列先頭の最短マッチ部分を削除
変数の先頭部分の置換を行いたいケースはこっち。例えばprefixの値を変えたいケース(001みたいに付けたはいいものの桁数が足りないとか)
$ echo $B test001 $ echo ${B#test} 001 ### prefixを帰る場合はこんな感じで書ける $ for i in *; do echo $i testa_${i#test} ; done