Наверняка частая задача, все уже сталкивались.
Если некоторый конфиг файл myfile.txt вида
user=${USER}
password=${PASSWORD}
.....
Мне нужно в файлике скриптом поменять все вхождения вида ${XXX} на значение, которое лежит в env переменной $XXX,
Например, надо поменять все ${USER} на значение из переменной $USER
Казалось бы херня-вопрос. И тут же всем на ум приходит команда
sed 's/${USER}/'"$USER"'/g' myfile.txt
Казалось бы, но нихера
Эта команда расхерачивает имя юзера, если в нем используются символы регекса. Например domain\user превращается в domainuser
Попробовал что то такое
sed 's/${USER}/'`echo $USER | sed 's/\\\\/\\\\\\\\\\\\\\\\/g'`'/g' myfile.txt
- - ну т.е. поменять предварительно все \ на \\ а потом уже вставлять в выражение основной замены
Оно корректно отработало на domain\user, но это херота какая то некрасивая. К тому же, а если в $PASSWORD будет символ точки или еще чего похуже? Мне каждый знак менять?
И отсюда вопрос: как без особой боли решить эту простую задачу?