diff --git a/script/clashctl.sh b/script/clashctl.sh index c155e6c..fb2ab52 100644 --- a/script/clashctl.sh +++ b/script/clashctl.sh @@ -87,7 +87,8 @@ function clashui() { _merge_config_restart() { local backup="/tmp/rt.backup" sudo cat "$CLASH_CONFIG_RUNTIME" 2>/dev/null | sudo tee $backup >&/dev/null - sudo "$BIN_YQ" eval-all '. as $item ireduce ({}; . *+ $item)' "$CLASH_CONFIG_MIXIN" "$CLASH_CONFIG_RAW" | sudo tee "$CLASH_CONFIG_RUNTIME" >&/dev/null + sudo "$BIN_YQ" eval-all '. as $item ireduce ({}; . *+ $item) | (.. | select(tag == "!!seq")) |= unique' \ + "$CLASH_CONFIG_MIXIN" "$CLASH_CONFIG_RAW" "$CLASH_CONFIG_MIXIN" | sudo tee "$CLASH_CONFIG_RUNTIME" >&/dev/null _valid_config "$CLASH_CONFIG_RUNTIME" || { sudo cat $backup | sudo tee "$CLASH_CONFIG_RUNTIME" >&/dev/null _error_quit "验证失败:请检查 Mixin 配置"