Как зациклить массив строк - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть инструмент командной строки, реализованный с помощью golang, который работает нормально.Я хочу выполнить некоторую команду, которая должна предоставить список строк

apps := $(shell fxt run apps)
apps:
    @echo $(apps) is called

в терминале. Я вижу следующее при выполнении make (что вполне нормально)

[app1 app2] is called

Посколькукоманда fxt run apps возвращает массив строк (var apps []string)

Мой вопрос: как я могу перебрать переменную apps?

возвращаемые данныепо команде все в порядке, но теперь мне нужно взять этот список (app1 ... appN) и зациклить его, проблема, которая мне не ясна, как я могу зациклить массив строк?

особый случай , если в списке циклов я получил app7, как сделать код в коде, например, если (app7) напечатает mvn clean install

пример.

для каждого приложения (в списке приложений) Мне нужно запустить команду

go test ./...

Но для app7 нужно запустить

mvn clean install

и для приложения 10

yarn

1 Ответ

0 голосов
/ 12 сентября 2018

Вы хотите запустить свой цикл внутри make или по рецепту, который на самом деле выполняет оболочку? Здесь у вас есть оба!

Примечание: я заменяю выполненную команду, чтобы проверить ее самостоятельно. Здесь я использую ls для заполнения моего массива.

apps := $(shell ls)

#looping in make itself
$(foreach var,$(apps),$(info In the loop running with make: $(var)))

#loop in shell inside recipe 
go:
    @for v in $(apps) ; do \
        echo inside recipe loop with sh command: $$v ; \
    done

Выход:

In the loop running with make: a
In the loop running with make: b
In the loop running with make: c
In the loop running with make: Makefile
inside recipe loop with sh command: a
inside recipe loop with sh command: b
inside recipe loop with sh command: c
inside recipe loop with sh command: Makefile
...