2004/12/03

いつも忘れるshのパターンマッチ。ローカルのメモを貼り付け。覚える必要もない、か。

・${変数#パターン}
最初の部分とパターンがマッチしたら、最も短く一致する部分を取り除いた残りの部分を返す。
・${変数##パターン}
最初の部分とパターンがマッチしたら、最も長く一致する部分を取り除いた残りの部分を返す。
・${変数%パターン}
最後の部分とパターンがマッチしたら、最も短く一致する部分を取り除いた残りの部分を返す。
・${変数%%パターン}
最後の部分とパターンがマッチしたら、最も長く一致する部分を取り除いた残りの部分を返す。
例:

$ for i in `seq 117 123`; do echo $i, ${i#1}, ${i##1}, ${i%1}, ${i%%1}; done

117, 17, 17, 117, 117
118, 18, 18, 118, 118
119, 19, 19, 119, 119
120, 20, 20, 120, 120
121, 21, 21, 12, 12
122, 22, 22, 122, 122
123, 23, 23, 123, 123

No comments :