Pergunta

Eu tenho um problema substituindo um interior comando de um script, a linha ofensiva nos olhares de script como este:

mail -s "$(hostname) on $(date)"

Ele deve ser substituído por uma linha como esta:

nail -r "sender@domain.com" -s "Subject" -S smtp=255.255.255.255

Mas eu não posso ficar sed fazer uma substituição :) Eu escrevi um pequeno script para o efeito:

#!/bin/bash

old="mail -s \"\$(hostname) on \$(date)"
new="nail -r \"sender@domain.com\" -s \"Subject\" -S smtp=255.255.255.255"

sed -i 's|$old|$new|' script.sh

Alguém tem algum conselho?

Foi útil?

Solução

sed -i "s|$old|$new|" script.sh

Observe as aspas duplas.

Outras dicas

Sed por padrão não fazer em Lugar edição. Se você estiver usando gnu tentativa Sed fornecendo o no lugar da bandeira -ikbak

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top