From ddc3f05bc361335d27da48cdf6f20d6e58080850 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 7 Sep 2026 18:49:24 -0600 Subject: [PATCH] =?UTF-8?q?fix(=E8=BF=90=E7=BB=B4=E8=84=9A=E6=9C=AC):=20cl?= =?UTF-8?q?ear-sessions.sh=20=E8=A1=A5=E4=B8=8A=20dash=20=E5=9E=AB?= =?UTF-8?q?=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `sh docker/clear-sessions.sh` 在 Debian 上会用 dash 跑(/bin/sh 就是它), 第 34 行的 `set -euo pipefail` 里 pipefail 是 bash 专有的,脚本一上来就死在 `Illegal option -o pipefail`,正事一件没干。deploy.sh 里早就有同一道垫片, 写这个脚本时漏抄了。 实跑验证(dev 栈,`sh docker/clear-sessions.sh`):垫片生效后跑到容器探活 那步正常报错;`CONTAINER=oj2-redis YES=1 sh docker/clear-sessions.sh` 全程 走通 —— session:* 删 101 个、user-sessions:* 删 4 个、bull:* 前后都是 57 个 (dbsize 162 → 57,判题队列一个键没动)。 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01XvmqDsZNyUo9P3sFQtoWVB --- docker/clear-sessions.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docker/clear-sessions.sh b/docker/clear-sessions.sh index 5603a54..42b34c2 100755 --- a/docker/clear-sessions.sh +++ b/docker/clear-sessions.sh @@ -31,6 +31,11 @@ # CONTAINER=oj2-redis docker/clear-sessions.sh # 本机 dev # YES=1 docker/clear-sessions.sh # 跳过确认 # +# `sh docker/clear-sessions.sh` 会用 dash 跑(Debian 的 /bin/sh 就是 dash),而下面 +# 那行的 pipefail 是 bash 专有的,一上来就报 `Illegal option -o pipefail`。 +# 这行必须在 set 之前,且只能用 dash 也认的语法。deploy.sh 里是同一道垫片。 +[ -n "${BASH_VERSION:-}" ] || exec bash "$0" "$@" + set -euo pipefail CONTAINER="${CONTAINER:-oj-redis}"