Bash является аварийным в Make-файле!

все,

Я нашел, что тот же Make-файл работает хорошо в Mac OS X, но не работает в Ubuntu. Отрывок как следует:

start:
    @echo $(seperator)
    @if [[ "$(PROJECT)" == "" ]]; then \
         echo " Project powered by CodeMate!"; \
     else \
         echo "  $(PROJECT)"; \
     fi
    @echo $(seperator)

и сделайте, жалуется:

/bin/sh: [[: not found

Какая-либо идея?

Удачи,

Литий


Обновления:

Я изменил вышеупомянутые условные операторы Bash на:

if test "$(PROJECT)" = ""; then \

затем вещи хорошо работают. Так что не так с" [["?

5
задан 14 January 2012 в 16:47

2 ответа

Make-файлы используют sh по умолчанию, а не bash.

В Ubuntu sh указывается на dash, POSIX-совместимую и минималистичную оболочку, не обеспечивающую [[ работу клавиш.

0
ответ дан 14 January 2012 в 16:47

Поместите это наверху вашего Makefile:

SHELL := /bin/bash # Use bash syntax

Это происходит потому, что [[ является встроенной командой bash, и вы запускаете ее с sh. В приведенной выше строке будет установлен bash в качестве интерпретатора по умолчанию для команд, запускаемых в make-файле.

0
ответ дан 14 January 2012 в 16:47

Другие вопросы по тегам:

Похожие вопросы: