Есть такой кусок кода:
for DIR_UDEL in $1
do
for DIR_DEL_UNIT in ${UNIT_DIR}
do
if [ -d "${DIR_UDEL}" ] && [ ${DIR_UDEL} == ${DIR_DEL_UNIT} ] # сравнение содержимого каталога со списком, если совпадает и является каталогом, то происходит переход в верхний цикл. Иначе удаляется.
then
continue 2
else
rm -R ${DIR_UDEL}
echo «${DIR_UDEL} удалён, так как его не должно быть»
fi
done
done
Коряво конечно… Смысл в том чтобы получить содержимое папки. Сравнить его со списком, и если не найдено ни одного соответствия, пристрелить файл или папку.
[ -d "${DIR_UDEL}" ] && [ ${DIR_UDEL} == ${DIR_DEL_UNIT} ] — это выражение всегда false.
Что я тут лишнего напридумывал? Вариант с написанием двух for не кажется мне удачным, а два if уж совсем. Но и сообразить в чём дело в данном контексте не получается.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Попробуй так, хотя не уверен.