У меня есть скрипт bash install.sh
в моем текущем каталоге, и у меня есть каталог apps
, который содержит несколько каталогов. Я хочу перебрать эти подкаталоги в папке приложения и выполнить какой-нибудь скрипт. После выполнения скрипта в первой папке он должен вернуться и войти в следующую папку. Я пробовал это, но он пропускает один за другим. Я имею в виду, что он входит во все нечетные папки и не входит в четные папки.
Код в install.sh
for f in apps/*;
do
[ -d $f ] && cd "$f" && echo Entering into $f and installing packages
cd ..
done;
Используйте полный путь своего родительского каталога (в моем случае apps
каталог, расположенный в моем корневом каталоге), и удалите одну дополнительную команду (cd ..
)
for f in ~/apps/*;
do
[ -d $f ] && cd "$f" && echo Entering into $f and installing packages
done;
, См. снимок экрана: с cd ..
команда и использование apps/*
Видят снимок экрана: без cd ..
команда и использование ~/apps/*
Можно использовать 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