From a7e90a2575a1f123120c56f6fe159faf34e5e469 Mon Sep 17 00:00:00 2001 From: chenyw1990 Date: Tue, 27 Jan 2026 22:16:47 +0800 Subject: [PATCH] refactor: improve key tracking in upsert_env function --- docker-setup.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/docker-setup.sh b/docker-setup.sh index 0f7571e96..c5698be39 100755 --- a/docker-setup.sh +++ b/docker-setup.sh @@ -124,7 +124,18 @@ upsert_env() { local -a keys=("$@") local tmp tmp="$(mktemp)" - declare -A seen=() + local -a seen_keys=() + local has_seen + has_seen() { + local candidate="$1" + local existing + for existing in "${seen_keys[@]:-}"; do + if [[ "$existing" == "$candidate" ]]; then + return 0 + fi + done + return 1 + } if [[ -f "$file" ]]; then while IFS= read -r line || [[ -n "$line" ]]; do @@ -133,7 +144,7 @@ upsert_env() { for k in "${keys[@]}"; do if [[ "$key" == "$k" ]]; then printf '%s=%s\n' "$k" "${!k-}" >>"$tmp" - seen["$k"]=1 + seen_keys+=("$k") replaced=true break fi @@ -145,7 +156,7 @@ upsert_env() { fi for k in "${keys[@]}"; do - if [[ -z "${seen[$k]:-}" ]]; then + if ! has_seen "$k"; then printf '%s=%s\n' "$k" "${!k-}" >>"$tmp" fi done