nixp.ru v3.0

26 мая 2017,
пятница,
06:46:14 MSK

DevOps с компанией «Флант»
Аватар пользователя REDkiy
REDkiy написал 24 июля 2009 года в 22:45 (482 просмотра) Ведет себя как мужчина; открыл 89 тем в форуме, оставил 593 комментария на сайте.

Есть такой кусок кода:

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 уж совсем. Но и сообразить в чём дело в данном контексте не получается.

metal


[ -d "${DIR_UDEL}" ] && [ "${DIR_UDEL}" == "${DIR_DEL_UNIT}" ]

Попробуй так, хотя не уверен.