Hier, wie gewuenscht, die Variante mit s-Befehl mit Variable:
Code: Alles auswählen
var="-f"
sed -i 's#^rm '"$var"' /tmp/the.lock#/usr/local/bin/shutdownbutton.py \&\n\n&#' /etc/rc.local
(Btw: Ich verstehe den Sinn aber nicht so recht. Warum ist das Flag fuer rm(1) in der Variable? Warum bedingst du dadurch die Einfuegung? Ich wuerde eher verstehen, wenn die ganze gesuchte Zeile in der Variable steht.)
Hier die Variante mit i-Befehl mit Variable:
Code: Alles auswählen
var="-f"
sed -i '/^rm '"$var"' \/tmp\/the.lock/i /usr/local/bin/shutdownbutton.py &' /etc/rc.local
Nochmal dasselbe ohne Slash-Escaping:
Code: Alles auswählen
var="-f"
sed -i '\#^rm '"$var"' /tmp/the.lock#i /usr/local/bin/shutdownbutton.py &' /etc/rc.local
... oder, falls vor der letzten Zeile eingefuegt werden soll:
Code: Alles auswählen
sed -i '$i /usr/local/bin/shutdownbutton.py &' /etc/rc.local
... und das noch portabel, wenn man kein GNU sed hat:
Code: Alles auswählen
sed '$i\
/usr/local/bin/shutdownbutton.py &' /etc/rc.local | sort -m -o /etc/rc.local
(Zur Erklaerung: nicht jedes sed kennt `-i', darum wird die Ausgabe nur auf stdout geschrieben. Diesen Output sammelt sort komplett ein, bevor es nach `-o /etc/rc.local' schreibt. `-m' sorgt dafuer, dass sort nicht sortiert. ... das ist etwas tricky, zugegeben, erspart einem aber das Umkopieren mit einer Hilfsdatei, was aber noetig waere, wenn das sed kein `-i' hat.)