local proxy_content_plain=" http_proxy=\"$PROXY_URL\" https_proxy=\"$PROXY_URL\" HTTP_PROXY=\"$PROXY_URL\" HTTPS_PROXY=\"$PROXY_URL\" no_proxy=\"$NO_PROXY\" NO_PROXY=\"$NO_PROXY\""
# 清理函数:使用标记来精确删除 clear_proxy() { local file="$1" if [ -f "$file" ]; then # 使用 sed 删除从 BEGIN_MARKER 到 END_MARKER 之间的所有行 sed -i "/^${BEGIN_MARKER}$/,/^${END_MARKER}$/d""$file" fi } # 写入函数 write_proxy() { local file="$1" local content="$2" # 写入前先清理,防止重复 clear_proxy "$file" # 使用 cat 和 EOF 来写入整个块 cat >> "$file" <<EOF
${BEGIN_MARKER} ${content} ${END_MARKER} EOF }
# 遍历文件列表进行操作 for f in "${ENV_FILES[@]}"; do if [[ "$action" == "on" ]]; then write_proxy "$f""$proxy_content_export" else clear_proxy "$f" fi done # 单独处理 /etc/environment if [[ "$action" == "on" ]]; then write_proxy "$ENV_FILE_SYSTEM""$proxy_content_plain" else clear_proxy "$ENV_FILE_SYSTEM" fi }
# YUM/DNF 配置 handle_package_manager() { local conf_file="/etc/yum.conf" if [ ! -f "$conf_file" ]; then conf_file="/etc/dnf/dnf.conf" # 兼容新的 CentOS/RHEL fi
# 先删除旧的 proxy 设置行,避免重复 sed -i '/^proxy=/d'"$conf_file" if [[ "$1" == "on" ]]; then # 在 [main] 部分追加配置 # 如果[main]不存在,则直接追加到文件末尾 if grep -q "\[main\]""$conf_file"; then sed -i "/\[main\]/a proxy=$PROXY_URL""$conf_file" else echo "proxy=$PROXY_URL" >> "$conf_file" fi fi }