Tente isso:
sed -i "s/\$cfg\[.blowfish_secret.\]\s*=.*/$replace/" file
Se você colocar aspas simples em torno das variáveis, as variáveis não poderão ser expandidas
Quando você baixa e extrai o phpMyAdmin mais recente, ele vem com um arquivo config.sample.inc.php . Gostaria de definir um valor blowfish_secret aleatório nessa linha:
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Então, o que tentei até agora é:
#!/bin/bash
cp config.sample.inc.php config.inc.php;
search="\$cfg['blowfish_secret'] = '';";
replace="\$cfg['blowfish_secret'] = '1234';";
sed -i -e 's/$search/$replace/g' config.inc.php;
# debug
echo $search;
echo $replace;
cat config.inc.php;
Quando eu testei esse script, o arquivo config.inc.php copiado não parece ter sido atualizado. Alguma idéia por quê? o search & Os campos replace estão sendo definidos corretamente: