シェルスクリプトの中で変数を使ってsedで文字列置換したい

Javaソースコードのpackageを一発で切り替えたかったのでシェルスクリプトを組んでみた。

最初以下のようにしたら当然のことながら$varにそのまま置換され(カッコ笑い)

#!/bin/sh

var=testapp1

find . -type f -a -name '*.java' | xargs sed -i -e 's/com\.yujimny\.android\.test/com\.yujimny\.android\.test\.$var/g'

正解はシングルクォートではなくダブルクォートにする。

#!/bin/sh

var=testapp1

find . -type f -a -name '*.java' | xargs sed -i -e "s/com\.yujimny\.android\.test/com\.yujimny\.android\.test\.$var/g"

もちろん.をマッチする場合はエスケープすることを忘れずに。でないとあらゆるものにマッチしちゃいます。

参照URL
http://foguerablog.seesaa.net/article/144242878.html