Всем привет, есть скрипт, который генерирует кучу 16-значных паролей, затем что-то делает с ними, например заменяет старые пароли на новые в конфигах:
NEWPASS=`cat /dev/urandom | tr -dc [:graph:] | head -c${1:-16}`
Подробности дальнейшей обработки этого я опущу, важно следующее: этот NEWPASS нужно запихнуть в конфиг, в котором уже есть старый пароль, старый пароль генерировался аналогично. Замена старого пароля на новый происходит так:
sed -ie 's/'$OLDPASS'/'$NEWPASS'/' /some/password/file
И всё было ничего, до момента, когда:
OLDPASS=>XGG3m36H;~;8ftL
NEWPASS=m]0gv#>0&:oSu(au
т.е. XGG3m36H;~;8ftL лежит в конфиге, а когда sed пытается его заменить на m]0gv#>0&:oSu(au , то в итоге получается:
m]0gv#>0>XGG3m36H;~;8ftL:oSu(au
Подскажите, как можно экранировать такое? Вставить костыли в виде парсинга свежесгенеренного пароля не предлагать, как и использование perl, php, c++ , упрощение пароля до букв+цифр