#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$ROOT_DIR" COMPOSE_FILE="${COMPOSE_FILE:-docker-compose.yml}" require_env() { if [[ ! -f ".env" ]]; then cat <<'EOF' 缺少 .env 文件。 请在仓库根目录创建 .env(参考 env.example),例如: cp env.example .env 然后按需修改其中变量。 EOF exit 1 fi } usage() { cat <&2 exit 2 fi tail="$2" shift 2 ;; --tail=*) tail="${1#*=}" shift ;; -h|--help|help) log_usage exit 0 ;; *) if [[ -z "$service" && "${1:0:1}" != "-" ]]; then service="$1" shift else echo "未知参数: $1" >&2 echo log_usage exit 2 fi ;; esac done args=(docker compose -f "$COMPOSE_FILE" logs) if [[ "$follow" = "1" ]]; then args+=(--follow) fi if [[ -n "$tail" ]]; then args+=(--tail "$tail") fi if [[ -n "$service" ]]; then args+=("$service") fi "${args[@]}" ;; -h|--help|help|"") usage ;; *) echo "未知命令: $cmd" >&2 echo usage exit 2 ;; esac