sed substituir o comando dentro de um script bash?
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?
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
Melhor utilização ed!
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow