2013-07-04 6 views
6

Ich brauche sed in Bash-Skript verwenden, um hinzuzufügen Linien nach jeder Zeile numer von Skript mit einigem Wertepaar (unten Arbeit)erweitert Variablen in sed

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

Aber ich brauche auf Skript bash (sh) für erweitern Variablen (unten nicht funktionieren)

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

Antwort

10

Verwenden Sie einfach doppelte Anführungszeichen anstelle von einfachen Anführungszeichen. Sie müssen auch {} verwenden, um die number_line Variable korrekt zu begrenzen und die \ zu umgehen.

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

würde ich persönlich lieber alle der Variablen finden Sie in der {} verwenden, enden mit so etwas wie:

sed -i.bak "${number_line}i\\${var1}=${var2}" ${var3} 
+0

Eine Menge Tanks. Ein bisschen verwirrend für mich zu entkommen. Arbeite für mich – abkrim

1

ändern einfache Anführungszeichen doppelte Anführungszeichen:

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. 
+0

notwendig, aber nicht ausreichend, um die OP das Problem zu beheben. –

+0

Ein bisschen verwirrend für mich. Wenn eine Frage gestellt wird, dann ist das, weil ich verschiedene Optionen ausprobiert habe. "", und nicht für mich arbeiten. Nach dem Lesen der ersten Antwort bekommen ein Bürgermeister Wissen und ich kann meine Arbeit fortsetzen. – abkrim

+0

@AbdelKarimMateosSanchez Sie können dann die oberste Antwort als [akzeptiert] markieren (http://meta.stackexchange.com/a/5235/181223). –