A causa comum é que uma (ou ambas) de suas variáveis contém o delimitador (no seu caso /
). Você pode
-
altere o delimitador se você tiver um caractere alternativo que não esteja presente:
sed -e "s#${VAR1}#${VAR2}#g"
ou
-
substitua o delimitador nas variáveis:
sed -e "s/${VAR1//\//\/}/${VAR2//\//\/}/g"
Pode haver outras substituições que você também precise fazer em $VAR1
se quiser que elas correspondam como um literal, pois s///
sempre usa expressões regulares.
No entanto, olhando para o que você nos mostrou, parece que tudo o que você está tentando fazer é alterar o valor atribuído a shared_buffers
no arquivo de configuração para o valor fixo 8GB
. Nesse caso, não há necessidade de quaisquer variáveis:
sed -i -e '/^shared_buffers[ \t]/s/=[ \t]*[^# \t]\+/= 8GB/' /postgresql.conf
Você pode ler isso como em todas as linhas que começam com shared_buffers
e um espaço horizontal, em seguida, substitua o primeiro =
e a palavra que segue com = 8GB
, que é o que você parece querer.