Каждая строка make-файла запускается в отдельной оболочке.Это означает, что ваше правило здесь:
clean:
if [ -f ./bin/status ]; then
rm -f ./bin/status
fi
фактически запускает следующие команды:
/bin/sh -c "if [ -f ./bin/status ]; then"
/bin/sh -c "rm -f ./bin/status"
/bin/sh -c "fi"
Вы можете понять, почему вы получаете это сообщение.Чтобы все строки были отправлены в одну оболочку, вам необходимо использовать обратную косую черту, чтобы продолжить строки следующим образом:
clean:
if [ -f ./bin/status ]; then \
rm -f ./bin/status; \
fi
Обратите внимание, это означает, что вам также нужно использовать точку с запятой после команды rm
, поэтому отделите ее отокончание fi
.
Теперь вы получаете вызов оболочки следующим образом:
/bin/sh -c "if [ -f ./bin/status ]; then \
rm -f ./bin/status; \
fi"