Reputation: 3692
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
Upvotes: 19
Views: 28556
Reputation: 225242
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}
Upvotes: 31
Reputation: 65851
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.
Upvotes: 5