Подтвердить что ты не робот

Проверьте, существует ли файл makefile перед его включением

У меня есть файл makefile, который включает файл Rules.mak, который содержит инструменты, которые я хочу использовать. Проблема в том, что папка с инструментами имеет бесплатные опции, если они хотят извлечь версию или использовать "родную" установку. Поэтому я хочу включить инструменты, извлеченные из правил, если он существует, иначе я хочу включить собственный файл.

что-то вроде этой цели:

if Tool/Rules.mak exists then
  include Tool/Rules.mak
else
  include common/Rules-Tool.mak
fi

Я пробовал либо способ bash, либо способ, но поскольку это предположение для настройки среды, у меня нет целевой спецификации, но вызывают ошибки из-за сбоя проверки.

if [ -f Tool/Rules.mak ]
then
echo testfile exists!
fi

также

if [ -d ./Tool ]
then
echo testfile exists!
fi

а также версии с кавычками и аналогичные. Проблема в том, что почти все время, когда я печатаю, я получаю следующую ошибку:

Rules.mak:14: *** missing separator.  Stop.    
4b9b3361

Ответ 1

Вы можете сделать это так (нет if или else)

-include Tool/Rules.mak
include common/Rules-Tool

так как вы не получите ошибку, если Tool/Rules.mak не существует. ( "-" делает трюк)

В общем /Rules -Tool вы затем используете оператор? = (оператор условного присваивания переменных) для назначения значений переменной. Этот оператор присваивает значение только в том случае, если переменная еще не существует. IOW, он не перезапишет ранее существовавшее значение. Если Tool/Rules.mak не существует или только частично заполняет переменную common/Rules-Tool, они завершат их.