2016-07-27 42 views
0

So versuche ich eine Sed-Befehl von einem Makefile auf RaspberryPi mit Raspbian auszuführen. Die Befehle, die ich verwende, funktionieren perfekt, wenn ich sie direkt in das Terminal eintippe, aber wenn ich versuche, sie aus einem Makefile auszuführen, bekomme ich folgende Rückmeldung:Wie SED-Befehl von Makefile auszuführen

sed: -e ausdruck # 1, char 14: extra zeichen nach Befehl

+1

Bitte den Kontext anzeigen! –

+0

Ich denke, du solltest deinen '/' Zeichen entkommen. Wenn "i" nicht definiert ist, erhalte ich zum Beispiel den Fehler in der letzten Zeile. –

+0

Sie könnten uns eine Menge Arbeit sparen, indem Sie ein [minimales vollständiges Beispiel] (http://stackoverflow.com/help/mcve) vorbereiten. – Beta

Antwort

1

Ihr Problem ist, dass Makefile Variable Expansion sieht viel wie Shell Variable Expansion. Das heißt, wenn Sie einen einzelnen Buchstaben Variable in einem Makefile haben:

X=Some string 

Dann sind Sie auf diese Variable verweisen wie:

$X 

Also, wenn Sie einen Befehl wie diesen in einem Ihrer Build Zeilengruppen:

sed -i -e '$i /usr/local/bin/startlogging.sh > /var/log/thingLog/myThing 2>&1 & \n' 

Die $i werden von machen (mit einer leeren Zeichenkette), was in ersetzt ein inval ID sed Befehl. Sie können dieses Problem beheben, indem Sie den $ durch Entkommen zu verdoppeln:

sed -i -e '$$i /usr/local/bin/startlogging.sh > /var/log/thingLog/myThing 2>&1 & \n' 

Dies wird in the Make documentation diskutiert.

+0

Das hat es gelöst! Vielen Dank! –