Перебрать все папки и выполнить скрипт

У меня есть скрипт bash install.sh в моем текущем каталоге, и у меня есть каталог apps, который содержит несколько каталогов. Я хочу перебрать эти подкаталоги в папке приложения и выполнить какой-нибудь скрипт. После выполнения скрипта в первой папке он должен вернуться и войти в следующую папку. Я пробовал это, но он пропускает один за другим. Я имею в виду, что он входит во все нечетные папки и не входит в четные папки.

Код в install.sh

for f in apps/*;
  do 
     [ -d $f ] && cd "$f" && echo Entering into $f and installing packages
     cd ..
  done; 
7
задан 2 October 2014 в 21:10

2 ответа

Используйте полный путь своего родительского каталога (в моем случае apps каталог, расположенный в моем корневом каталоге), и удалите одну дополнительную команду (cd ..)

for f in ~/apps/*;
  do 
     [ -d $f ] && cd "$f" && echo Entering into $f and installing packages
  done;

, См. снимок экрана: с cd .. команда и использование apps/*

enter image description here

Видят снимок экрана: без cd .. команда и использование ~/apps/*

enter image description here

0
ответ дан 2 October 2014 в 21:10

Можно использовать find наряду с exec для этого, делают предложение. Ваш install.sh должен быть

#!/bin/bash
find ./apps -type d -exec echo Entering into {} and installing packages \; 

текст замены после -exec с Вашей командой

, например

#!/bin/bash
find ./apps -type d -exec touch {}/test.txt  \;  

, Это циклично выполнится через приложение и все его подкаталоги и создаст файл

text.txt
0
ответ дан 2 October 2014 в 21:10

Другие вопросы по тегам:

Похожие вопросы: