Bash – sed replace command inside of a bash script

bashscriptingsed

I have a problem replacing a command inside of a script, the offending line in the script looks like this:

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

It should be replaced with a line like this:

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

But I can't get sed to do a replacement 🙂 I wrote a small script for that purpose:

#!/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

Does anyone have any advice?

Best Solution

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

Note the double quotes.