diff --git a/mihomo-up.sh b/mihomo-up.sh index cd0bda9..62b2486 100644 --- a/mihomo-up.sh +++ b/mihomo-up.sh @@ -949,12 +949,14 @@ cfg_backup_menu() { # 每条入站写成一行 YAML 流式映射并带标记,加/删就是加一行/删一行,不动别处。 LISTENER_TAG="# mihomo-up:listener" -cfg_listener_list() { # 每行输出「序号 整行内容」 +cfg_listener_list() { # 每行输出「序号 原文件行号 整行内容」 local f; f="$(conf_file)" [[ -f "$f" ]] || return 0 + # 末尾的 || true 不能省: 一条入站都没有时 grep 退出码是 1,配上 pipefail + # 会让整个函数返回失败,进而触发 ERR trap —— 但"没有入站"是正常状态,不是错误 grep -n "$LISTENER_TAG" "$f" 2>/dev/null \ | sed -E 's/^([0-9]+):[[:space:]]*/\1\t/' \ - | awk -F'\t' '{ printf "%d\t%s\t%s\n", NR, $1, $2 }' + | awk -F'\t' '{ printf "%d\t%s\t%s\n", NR, $1, $2 }' || true } cfg_listener_show() {