Есть беда: из 400-800 файлов zip есть от одного до 15 (максимум, который встречал) "битых" файлов. Как только системнанатыкается на них - происходит останов процесса. И становится всем плохо :-(
В ручном режиме чистить так: в логах находишь имя "сбойнутого" файла, удаляешь его, перезапускаешь процесс, ждешь следующего. Долго и муторно.
Начал писать скрипт. Список файлов получил. Обрабатываю их в цикле.
Но вот затык! Как понять В СКРИПТЕ что файл битый?
#!/bin/bash
echo ===============================
for file in /home/ukm5/mint/exchange/items/in/mytest/*
do
if [ -d "$file" ]
then
echo "$file is a directory"
elif [ -f "$file" ]
then
REZULT=$(unzip -t $file)
REZ1=`echo ${REZULT} | awk '{print $1}'`
echo ++++++++
echo + $? +
echo ++++++++
echo $REZ1
echo ===============================
echo
fi
done
Дает вот такой результат:
root@ubuntu:~/mint/exchange/items/in/myprg# ./ttt.sh
===============================
error: invalid compressed data to inflate
++++++++
+ 0 +
++++++++
Archive:
===============================
++++++++
+ 0 +
++++++++
Archive:
===============================
root@ubuntu:~/mint/exchange/items/in/myprg#
Как видим - по коду, возвращаемому unzip ничего не понятно - он равен 0.
А попытка выцепить первое слово - возвращает, почему то, строку :-(
Подскажите, а то я из-за недостаточного владения баше не вижу иного выхода?