Нет прямого способа выйти из цикла в случае возникновения ошибки. Очевидным способом является использование цикла while
вместо цикла for
, но это не так просто сочетается с итерацией по списку. Вам нужно собрать список в переменную, а затем явно удалить элементы из списка, что делает код намного сложнее.
items=(cache thumbs);
while ((${#items[@]})) && my template "${items[0]}":clear; do shift items; done
((${#items[@]} == 0)) # to check if all the items were processed
Более короткий способ записать это, чем использование оператора if
:
for what in cache thumbs; do
my template "$what":clear || break;
done
Использование логических операторов обычно менее читабельно, чем использование if
, но somecommand || fallback
довольно идиоматично.
Обратите внимание, что цикл for
всегда завершается успешно. Нет удобного способа узнать, вышел ли код раньше (, вы можете проверить, является ли $what
последним элементом после цикла, но для этого требуется удобный способ узнать, каким был последний элемент, и он не позволяет вам узнать, был ли успешно обработан последний элемент ).
Это плохо масштабируется для нескольких команд. Вместо этого вы можете включить режим errexit с помощью set -e
. Это приводит к тому, что оболочка завершает работу, как только команда терпит неудачу (в простых случаях — детали довольно сложны, но здесь достаточно ). Обратите внимание, что завершается вся оболочка (sub ), а не только содержащий цикл, или содержащая функция, или содержащий сценарий.Чтобы закрыть только часть скрипта, поместите эту часть в подоболочку . Обратите внимание, что модификации переменных не сохраняются в подоболочке.
( set -e;
for what in cache thumbs; do
my template "$what":clear;
done
)
# Here $? is 0 if all the mv commands succeeded and nonzero otherwise
Шаг 1. Обновите систему....
*обновление sudo apt *обновление sudo apt
Шаг 2. Найдите и запишите свой IP-адрес....
IP а IP шоу eth0
Шаг 3. Загрузите и запустите сценарий openvpn -install.sh....
wgethttps://git.io/vpn-O openvpn -ubuntu -install.sh
chmod -v +x openvpn -ubuntu -install.sh режим «openvpn -ubuntu -install.sh» изменен с 0644 (rw -r --r --)на 0755 (rwxr -xr -x )нано openvpn -ubuntu -install.sh sudo./openvpn -ubuntu -install.sh
Шаг 4. Подключите сервер OpenVPN с помощью настольного клиента iOS/Android/Linux/Windows.
Остановить сервер OpenVPN. sudo systemctl остановить openvpn -server@server.service
Запустите сервер OpenVPN. sudo systemctl запустить openvpn -server@server.service
Перезапустите сервер OpenVPN после изменения параметров конфигурации. sudo systemctl перезапустить openvpn -server@server.service
Показать статус сервера OpenVPN sudo systemctl статус openvpn -server@server.service
Шаг 5. Проверка/проверка подключения.