パターン文字列をsedで置換しちゃうとか(GNU sed の場合)

$ pattern='foo[1]'
$ sed "s/$(sed -r 's/([-*+^.$/\]|\[|\])/\\\1/g' <<< "${pattern}")/foo[2]/g" <<< 'foo[1]'
foo[2]