Вы можете получить эту сложность в sed независимо от того, какие разделители вы используете, особенно если вы не знаете, что содержит строка.Я бы выбрал другой метод для передачи переменных оболочки в вспомогательный интерпретатор.
awk -v rep1="$bar" -v rep2="$text" '{sub(/foo/, rep1); sub(/some/, rep2); print}'
или
perl -spe 's/foo/$rep1/; s/some/$rep2/' -- -rep1="$bar" -rep2="$text"
Корректность в данном случае важнее краткости.
(ссылка на пример Perl )