Как запустить сценарий sub Shell в Makefile? - PullRequest
0 голосов
/ 17 мая 2018

Я хочу выполнить команду Shell, но я не знал, как правильно выполнить команду sub bash в моем Makefile

import-bd:
    @while ! nc -z $(make ips | awk '/mysql/ { print $2 }') 3306; do \
        sleep 1 \
    done
    ...

Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вы пропустили точку с запятой после sleep 1.
Также сначала выполните синтаксический анализ этой строки, а затем bash.Вы должны избежать доллара с двумя долларами.

import-bd:
    @while ! nc -z $$(make ips | awk '/mysql/ { print $$2 }') 3306; do \
        sleep 1; \
    done
0 голосов
/ 17 мая 2018

Вам нужно указать $ s и добавить ;

import-bd:
    @while ! nc -z $$(make ips | awk '/mysql/ { print $$2 }') 3306; do \
        sleep 1; \
    done

Когда make видит один $, он пытается выполнить расширение переменной. Записав $$, make передает один $ в awk (или, точнее, передает $ в SHELL, который вызывает awk). Кроме того, точка с запятой после sleep 1 необходима, потому что make удаляет символ новой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...