Проблема с Makefile при сравнении строк - PullRequest
0 голосов
/ 17 января 2020

В моем make-файле мне нужно проверить, начинается ли файл с bash шебанга.

Я получаю это значение, делая это

PROJECT_AUTOINSTALL_FIRST_LINE := $$(head -n 1 ./autoinstall_script.sh)

И затем я сравниваю его с этим значение:

BASH_SHEBANG = \#!/bin/bash

Затем я проверяю, равны ли они, выполняя

ifneq ($(PROJECT_AUTOINSTALL_FIRST_LINE),$(BASH_SHEBANG))
    @${ERROR_ECHO} "The FIRST line in project autoinstall file MUST be $(BASH_SHEBANG)."
endif

Проблема заключается в том, что условие всегда верно независимо от того, начинается файл с shebang или нет. Я сделал отладочное эхо, чтобы визуально проверить равенство, и получил следующее:

enter image description here

Они кажутся одинаковыми на первый взгляд, но код не говорю так. Вы знаете, что я делаю не так?

Спасибо.

1 Ответ

1 голос
/ 17 января 2020

Что делает

PROJECT_AUTOINSTALL_FIRST_LINE := $$(head -n 1 ./autoinstall_script.sh)

, так это просто назначает буквенную строку $(head -n 1 ./autoinstall_script.sh) для создания переменной PROJECT_AUTOINSTALL_FIRST_LINE. Не то, что вы хотите. Вместо этого попробуйте следующее:

PROJECT_AUTOINSTALL_FIRST_LINE := $(shell head -n 1 ./autoinstall_script.sh)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...