Ответ
В bash для логического ИЛИ используется оператор ||. Его можно применять как для объединения целых команд, так и для условий внутри конструкций if.
1. Объединение условий внутри if (рекомендуемый способ):
if [[ "$USER" == "root" ]] || [[ "$EUID" -eq 0 ]]; then
echo "Выполняется с правами суперпользователя."
fi
2. Устаревший оператор -o внутри [ ] (избегать):
if [ "$USER" = "root" -o "$EUID" -eq 0 ]; then
echo "Выполняется с правами суперпользователя."
fi
# Способ устарел и менее надежен из-за проблем с экранированием.
3. Использование || для управления выполнением команд:
# Если команда слева завершилась с ошибкой (exit code != 0), выполнится команда справа.
apt-get update || echo "Ошибка обновления репозиториев" >&2
# Часто используется в скриптах развертывания для отката.
apply_migration || rollback_migration
Практический пример из CI/CD:
# Проверяем, что контейнер запущен ИЛИ сервис активен.
if docker inspect -f '{{.State.Running}}' my-app || systemctl is-active --quiet nginx; then
echo "Сервис доступен."
exit 0
else
echo "Сервис недоступен!" >&2
exit 1
fi