Ошибка в bash скрипте. Обновляем git репозитории во вложенных папках

У меня есть структура папок с сабмодулем

  • sub
  • repo1
    -- sub
  • repo2
    -- sub
  • repo3
    -- sub

Хочу после обновления сабмодуля - пройтись по папкам(репозиториям) и сделать пуш с новым коммитом сабмодуля (обновить его в репозиториях)

Написал bash скрипт без find (выполняю в папке на уровень выше, чем структура выше)

for i in */sub; do (echo i; git pull; cd ..; git add .; git commit -m "Update submodule"; git push -u origin master); done

Ожидаю: Пройдусь по всем папкам с сабмодулем, зайду в папку /sub, сделаю там git pull, вернусь на уровень вверх и сделаю коммит.

Что получаю:

fatal: не найден git репозиторий (или один из родительских каталогов): .git

В моих директориях точно есть .git. И если делать эти команды руками - все ок. Я где-то ошибаюсь в путях, но не понимаю где, и как фиксить.

Буду благодарен помощи


Ответы (1 шт):

Автор решения: Vlad

Как верно подсказали в комментах - for не заходит в директории.

Все пофиксилось захождением в cd $i

for i in */sub; do (echo $i;
cd $i
git checkout master; 
git pull; 
cd ..; 
git add .; 
git commit -m "UPD SUB REPO"; 
git push -u origin master); 
done
→ Ссылка