fix: 没有入站端口时不该报「第 N 行出错」
进「配置管理 → 入站端口」而配置里一条入站都没有时,脚本会连报两次 错误然后退出。 cfg_listener_list 末尾是 grep 管道,grep 无匹配时退出码为 1,配上 pipefail 就把整个函数判为失败,触发 ERR trap。"没有入站"是正常状态, 不是错误,末尾补 || true。 两次报错是同一根因的两次现身:第一次在 $() 子 shell 里,只杀掉子 shell; 第二次是外层赋值继承了非零码,才真正终止脚本。
This commit is contained in:
+4
-2
@@ -949,12 +949,14 @@ cfg_backup_menu() {
|
||||
# 每条入站写成一行 YAML 流式映射并带标记,加/删就是加一行/删一行,不动别处。
|
||||
LISTENER_TAG="# mihomo-up:listener"
|
||||
|
||||
cfg_listener_list() { # 每行输出「序号 <TAB> 整行内容」
|
||||
cfg_listener_list() { # 每行输出「序号 <TAB> 原文件行号 <TAB> 整行内容」
|
||||
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() {
|
||||
|
||||
Reference in New Issue
Block a user