Как bash не завершает этот l oop и обрабатывает только 1 элемент, если я не вызываю скрипт X? - PullRequest
2 голосов
/ 08 апреля 2020

У меня есть следующее l oop, которое РАБОТАЕТ ...

# Build all modified projects
echo "$PROJECTS_TO_BUILD" | while read PROJECTS; do
    log "Calling build-projects.sh ${PROJECTS}"
    #$DIR/build-projects.sh ${PROJECTS}
done;
echo "I get here in both looping cases"

В КАЖДОЙ строке есть список проектов (разделенных символом новой строки). Заметьте, у меня есть одна строка, которую я oop закомментировал. Тогда у меня есть l oop, который не работает ...

# Build all modified projects
echo "$PROJECTS_TO_BUILD" | while read PROJECTS; do
    log "Calling build-projects.sh ${PROJECTS}"
    #$DIR/build-projects.sh ${PROJECTS}
done;
echo "I get here even though the loop only executed the first thing"

Я обрезал скрипт build-projects. sh, пока не нашел проблему в том, где я вызываю gradle ( который находится в другом l oop). Если я не вызываю gradle, все работает, и если я вызываю gradle, l oop не работает.

Я только что заметил, что обертка gradle имеет это вверху, в то время как другие скрипты находятся в bash. Имеет ли это значение?

#!/usr/bin/env sh

Еще один трюк, который я пробовал - просто добавить &, и это работает, но его нужно заблокировать. Интересно, есть ли простой способ разветвления и блокировки, и это возможно исправить?

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