Вызов команды с кавычками в аргументах в bash - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть система сборки на основе make, которую я иногда использую для переопределения некоторых источников в целях тестирования. Я создал скрипт, который извлекает список всех источников в Makefile, затем удаляю те, которые мне не нужны, и добавляю что-то еще. Вся команда должна выглядеть следующим образом:

make SOURCES="src1.c src2.c" target

Сценарий выглядит так:

mapfile -t sources < <( make print-SOURCES | tr " " "\n" | grep -v $SRC_REMOVE)
sources+=("$TEST_SOURCE")

print target в Makefile - это простой помощник, использующий который Я могу распечатать переменные:

print-%:
    @echo '$($*)'

Теперь я пытаюсь заставить bash вызывать make так, как я хочу, но безуспешно. Вот что я пробовал:

1) make SOURCES=""${sources[@]}""

Не работает. Расширяется так: make SOURCES=src1.c src2.c

Источники не указаны, поэтому вызов не работает.

2) make SOURCES="\"""${sources[@]}""\"" Также не работает. Расширение: make 'SOURCES="src1.c' 'src2.c"'

Второй для меня настоящий скребок. Есть предложения?

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