Expand variables in sed
19,334
Solution 1
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}
Solution 2
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.
Comments
-
abkrim almost 2 years
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
-
Carl Norum almost 11 yearsNecessary, but not sufficient to fix the OP's problem.
-
abkrim almost 11 yearsA lot of tanks. A bit confuse for me escaping. Work for me
-
abkrim almost 11 yearsA bit confuse for me. If put a ask, it's because, i was try several options. "", '', and dont' work for me. After read first response get a mayor knowledg and I can continue my work.
-
Lev Levitsky almost 11 years@AbdelKarimMateosSanchez You can mark the top answer as accepted then.