Если бы Вы хотите знать после того, как цикл закончен, то очевидная вещь состояла бы в том, чтобы установить переменную, указывающую, что все в порядке. Когда что-то не в порядке, Вы заменяете переменную, и в конце цикла Вы смотрите в переменной, чтобы видеть, не было ли что-нибудь в порядке:
ok=1
for i in "${files[@]}"
do
if [ ! -e "$i" ]; then
ok=0
fi
done
if [ $ok -eq 1 ]; then
echo "NO ERROR"
else
echo "ERROR"
fi
Используя [ ! -e "$i" ]
постарается не распечатывать ошибки от ls
хотя Вы могли сделать
ls -l "$i" > /dev/null 2>&1
перенаправить ls
вывод и ошибки к/dev/null
Проблема Вот эта часть вашей основной конфигурации:
ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
Эти директивы влияют на весь сервер, включая VirtualHost. Но предыдущая часть, а именно:
Alias /error/ "/var/www/error/"
, не повлияет на виртуальный хост - потому что псевдоним работает для основного сервера, а не для VirtualHost.
Итак, чтобы заставить документы об ошибках работать, вам нужно будет убедитесь, что конфигурация обработки ошибок доступна в том же контексте, что и конфигурация виртуального хоста. Как бы то ни было, вы ссылаетесь на путь, который не существует в контексте VirtualHost.
(Мне не ясно, используете ли вы свой веб-сервер для более чем одного сайта. Если все достигается с использованием одного и того же имени хоста,