Если заявление Makefile tcsh - PullRequest
0 голосов
/ 13 июня 2018

Я хочу что-то вроде:

my_rule:
       if($(VAR) == $@) then
             echo 'ok'
       else
             echo 'ko'
       endif

Я должен использовать tsch , но я знаю, что Makefile использует sh , поэтому мне действительно интересно, нужно ли мнеиспользуйте sh или tcsh, если синтаксис оператора здесь ...?Правильный синтаксис для оператора if в сценарии tsch (я проверил):

#!/bin/csh

if(3 == 3) then
    echo 'yes'
else
    echo 'no'
endif

Я пытался поместить ; и \ везде в мой Makefile, но ничего не получалось.

1 Ответ

0 голосов
/ 13 июня 2018

Оболочка берется из переменной SHELL, и, если она не указана, по умолчанию используется /bin/sh.Предполагая, что вы не переопределяете оболочку, ваш синтаксис будет таким:

my_rule:
       if [ "$(VAR)" == "$@" ]; then \
         echo 'ok'; \
       else \
         echo 'ko'; \
       fi

Вам нужно использовать \ для объединения строк в одну строку рецепта.Обратите внимание, что это не вводит фактические новые строки, поэтому вам также придется вручную завершать каждую команду с помощью ;.Наконец, поместите в кавычки переменные, чтобы, если одна из них оказалась пустой, вы не получили синтаксическую ошибку.

...