Beim Versuch, den Fehler eines Befehls in einem Makefile (in diesem Fall jekyll build relative
) zu testen, sollte die Variable $$?
den Exit-Code des letzten Befehls enthalten. Beim Testen wird dieser Code mit 127 angezeigt. Ich möchte ihn jedoch der Variablen LAST_EXIT
zuweisen, damit eine nächste if-Anweisung prüfen kann, ob der ausgeführte Befehl erfolgreich war oder fehlgeschlagen ist.Wie kann man der Variablen im Makefile einen Wert zuweisen?
Das Problem ist, dass LAST_EXIT
nie den Wert erhält, der zugewiesen wird, wie im folgenden Code gezeigt. Irgendwelche Vorschläge, wie Sie dieses Problem beheben können?
Code:
LAST_EXIT = 0
all:
@echo "Building the website... Running command:"
- jekyll build relative || LAST_EXIT=$$?
- jekyll build relative || echo $$? and $(LAST_EXIT)
ifeq ($(LAST_EXIT), 0)
#echo a message indicating success
Ausgang:
jekyll build relative || LAST_EXIT=$?
/bin/sh: jekyll: command not found
jekyll build relative || echo $? and 0
/bin/sh: jekyll: command not found
127 and 0
Dank für Ihre Hilfe danken ich glaube, ich bin ein anderes System, als Sie mit einem Daher lief der Makefile-Code in folgendem Fehler: '/ bin/sh: Zeile 0: [: ==: unärer Operator erwartet 'Ich habe dieses Problem gelöst, indem ich ein Skript geschrieben habe, das prüft, ob Jekyll installiert ist oder nicht. Das 'if ... fi'-Format funktioniert in meinem Bash-Skript gut, obwohl ich den Gleichheitstest modifizieren musste. –