feat(vps-xray): 新增 update_env_field 就地更新 .env 单个字段
This commit is contained in:
@@ -105,6 +105,40 @@ reset_env; XRAY_RESTART_TIMEZONE=""
|
||||
resolve_restart_config 2>/dev/null
|
||||
is "时区空串报错" "$?" "1"
|
||||
|
||||
echo "== update_env_field =="
|
||||
|
||||
TMP="$(mktemp -d)"
|
||||
trap 'rm -rf "$TMP"' EXIT
|
||||
|
||||
cat > "${TMP}/.env" << 'ENVEOF'
|
||||
# 这是用户自己加的注释
|
||||
XRAY_PORT=443
|
||||
XRAY_RESTART_EVERY_DAYS=0
|
||||
# 尾部注释
|
||||
ENVEOF
|
||||
|
||||
update_env_field "${TMP}/.env" XRAY_RESTART_EVERY_DAYS 7
|
||||
is "替换已有字段" "$(grep '^XRAY_RESTART_EVERY_DAYS=' "${TMP}/.env")" "XRAY_RESTART_EVERY_DAYS=7"
|
||||
is "保留用户注释" "$(grep -c '这是用户自己加的注释' "${TMP}/.env")" "1"
|
||||
is "保留尾部注释" "$(grep -c '尾部注释' "${TMP}/.env")" "1"
|
||||
is "不影响其它字段" "$(grep '^XRAY_PORT=' "${TMP}/.env")" "XRAY_PORT=443"
|
||||
|
||||
update_env_field "${TMP}/.env" XRAY_RESTART_TIME 05:30
|
||||
is "追加缺失字段" "$(grep '^XRAY_RESTART_TIME=' "${TMP}/.env")" "XRAY_RESTART_TIME=05:30"
|
||||
|
||||
update_env_field "${TMP}/.env" XRAY_RESTART_TIMEZONE Asia/Shanghai
|
||||
is "含斜杠的值不被 sed 分隔符干扰" \
|
||||
"$(grep '^XRAY_RESTART_TIMEZONE=' "${TMP}/.env")" "XRAY_RESTART_TIMEZONE=Asia/Shanghai"
|
||||
|
||||
update_env_field "${TMP}/.env" XRAY_RESTART_TIMEZONE Europe/Berlin
|
||||
is "含斜杠的值可被再次替换" \
|
||||
"$(grep '^XRAY_RESTART_TIMEZONE=' "${TMP}/.env")" "XRAY_RESTART_TIMEZONE=Europe/Berlin"
|
||||
|
||||
is "字段总行数正确" "$(grep -c '^XRAY_RESTART_TIMEZONE=' "${TMP}/.env")" "1"
|
||||
|
||||
update_env_field "${TMP}/nonexistent" FOO bar 2>/dev/null
|
||||
is "文件不存在返回 1" "$?" "1"
|
||||
|
||||
echo ""
|
||||
echo "通过 ${PASS},失败 ${FAIL}"
|
||||
[ "$FAIL" -eq 0 ]
|
||||
|
||||
Reference in New Issue
Block a user