シェルスクリプトの中で変数を使って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"
もちろん.をマッチする場合はエスケープすることを忘れずに。でないとあらゆるものにマッチしちゃいます。