Vamos tornar isso um pouco mais simples. Você deseja substituir cada ocorrência de a
por '$b'
(um dólar, um b entre aspas simples). c
, a que a variável $b
acontece se expande, não é o que você deseja.
b=c
sed -i "s/a/'$b'/g" *.php
O comando acima é semelhante ao que você está fazendo no seu problema. Como a string s/a/'$b'/g
está entre aspas duplas, as variáveis são expandidas e a string de substituição é 'c'
.
Se todo o comando sed
estiver entre aspas duplas, você precisará sair de $
. Esta é uma solução:
sed -i "s/a/'\$b'/g" *.php\
Outra possibilidade é não citar nada, exceto para qualquer caracter que tenha um significado especial para o shell (não recomendado, mas pode ser perspicaz):
sed -i s/a/\'\$b\'/g *.php