shスクリプトについて質問させて下さい。

スクリプト:
 var1='hoge fuga mukyo'
 var2='fuga'
 var3='uhyo'
 echo $var1 | sed s/$var2/$var3/g
実行結果:
 hoge uhyo mukyo

という具合に、var1中のvar2をvar3へ置換したいと思います。
しかしvar2やvar3の内容が予測不可(外部ファイルから読み込む等)な場合、
var2やvar3に要エスケープな文字('/',正規表現等)が入ると、
sedが期待通りに動いてくれなかったり、エラーで終わります。

これを回避する方法として
 - 自作サブルーチンでvar2,var3の内容をチェックしてエスケープしてからsedへ渡す。
 - shを諦めてperl等を使う。
を考えました。

これ以外にお手軽な常套手段みたいなものはありますでしょうか?