| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/bin/bash
- # 门店检测工作台 —— macOS / Linux 启动器
- # 用法:
- # Finder 里双击本文件即可启动
- # 终端:./启动工作台.command [端口] [--local] [--no-open]
- # 端口默认 8787
- # --local 只允许本机访问(默认开放给同一局域网)
- # --no-open 启动后不自动打开浏览器
- cd "$(dirname "$0")" || exit 1
- # ---- 找 Python 3.7+ ----
- PY=""
- for c in python3 python; do
- if command -v "$c" >/dev/null 2>&1; then
- if "$c" -c 'import sys; sys.exit(0 if sys.version_info >= (3, 7) else 1)' >/dev/null 2>&1; then
- PY="$c"
- break
- fi
- fi
- done
- if [ -z "$PY" ]; then
- echo "✗ 没找到 Python 3.7 或更高版本。"
- echo ""
- echo " 安装方式(任选一种):"
- echo " 1) 到 https://www.python.org/downloads/ 下载安装包"
- echo " 2) 装了 Homebrew 的话:brew install python"
- echo ""
- read -r -p "按回车关闭窗口…" _
- exit 1
- fi
- # ---- 解析参数:端口 + 透传选项 ----
- PORT=8787
- PASSTHRU=()
- OPEN=1
- for a in "$@"; do
- case "$a" in
- --no-open) OPEN=0 ;;
- --local) PASSTHRU+=("$a") ;;
- --*) ;;
- *) PORT="$a" ;;
- esac
- done
- if [ "$OPEN" = "1" ]; then
- PASSTHRU+=("--open")
- fi
- # ---- 端口占用检查 ----
- if command -v lsof >/dev/null 2>&1 && lsof -nP -iTCP:"$PORT" -sTCP:LISTEN >/dev/null 2>&1; then
- echo "✗ 端口 $PORT 已被占用,可能工作台已经在运行。"
- echo " 先试试打开:http://127.0.0.1:$PORT"
- echo " 要换端口:./启动工作台.command 9000"
- echo ""
- read -r -p "按回车关闭窗口…" _
- exit 1
- fi
- echo "Python:$("$PY" --version 2>&1) ($(command -v "$PY"))"
- echo ""
- exec "$PY" -u backend/server.py --port "$PORT" "${PASSTHRU[@]}"
|