Вам нужно удвоить количество обратных косых черт, так как вы работаете в двойных кавычках:
sed -i "/#variables/i \\
$var1\\
$var2\\
$var3" /data1/create_database
И если у вас есть дела поважнее, чем считать эти чертовы обратные косые черты, вы можете позволить sed
позаботиться о деталях за вас, но это будет стоить вам кода:
sed -i "/#variables/{H;s/.*//;x;}
s/\\n/$var1&$var2&$var3&/
" /data1/create_database
Или это, где не упоминается новая строка:
sed -i "/#variables/{
h
s/.*/$var1/p
s/.*/$var2/p
s/.*/$var3/p
g
}" /data1/create_database
Конечно, при размещении переменных оболочки внутри sed необходимо соблюдать осторожность. код. Их нужно сначала стерилизовать, а потом использовать. Например, что, если в вашей оболочке есть косая черта '/'?