• Uncategorized

About bash : Expand-variables-in-sed

Question Detail

I need use sed into bash script, for add lines after any line numer of script with some pair of values (below work)

sed -i.bak ’14i\some_text=some_text’ file

But I need on script bash (sh) for expand variables (below not work)

sed -i.bak ‘$number_linei\$var1=$var2’ $var3

Question Answer

Just use double quotes instead of single quotes. You’ll also need to use {} to delimit the number_line variable correctly and escape the \, too.

sed -i.bak “${number_line}i\\$var1=$var2” $var3

I’d personally prefer to see all of the variables use the {}, ending up with something like:

sed -i.bak “${number_line}i\\${var1}=${var2}” ${var3}

……………………………………………………
Change single quotes to double quotes:

man bash:

Enclosing characters in single quotes preserves the literal value of
each character within the quotes.

Enclosing characters in double quotes preserves the literal value of
all characters within the quotes, with the exception of $, `, \, and,
when history expansion is enabled, !. The characters $ and ` retain
their special meaning within double quotes.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.