シェル変数の末尾の文字を削除する
シェルスクリプトを書く際、変数の末尾についた余分な記号を取りたいとき、以下のように行っていた(以下、"bananapencilbook"という文字列から"book"を削除する)。OSはCentOS、シェルはbashです。
$ echo ${testvar}
bananapencilbook
$ echo ${testvar} | sed -e 's/book$//g'
bananapencil
上の方法は末尾の文字列以外にも適用できるので楽なのだが、他に何かないか探していたところ、 同じことが以下のようにできるらしい。
$ echo ${testvar%book}
bananapencil
%以下の文字列に後方一致するものを削除するという機能なのだが、他にも便利な記法があるようで、 以下にまとまっている。
あるものは使いましょう。とりあえずsedで何とかしちゃうのダメですね。