

___x_cmd_env_var_backup(){
    while [ $# -gt 0 ]; do
        ___x_cmd_env_var_backup___one "$1"
        shift
    done
}

___x_cmd_env_var_backup___one(){
    [ -n "$1" ] || M='Provide varname' N=env log:ret:1
    local varname_bak="___X_CMD_ENV_VAR___BACKUP_${1}"

    if ___x_cmd_env_var_isunset "$varname_bak"; then
        if ___x_cmd_env_var_isunset "$1"; then
            ___X_CMD_ENV_VAR_LIST="${___X_CMD_ENV_VAR_LIST}
$1=
"
        else
            ___X_CMD_ENV_VAR_LIST="${___X_CMD_ENV_VAR_LIST}
$1
"
        fi
        eval "$varname_bak=\"\$${1}\""
    fi
}

___x_cmd_env_var_get_backup_(){
    eval "___X_CMD_ENV_VAR_GET_BACKUP_=\"\$___X_CMD_ENV_VAR___BACKUP_$1\""
}

___x_cmd_env_var_get_backup(){
    local ___X_CMD_ENV_VAR_GET_BACKUP_
    ___x_cmd_env_var_get_backup_ "$1"
    printf "%s\n" "$___X_CMD_ENV_VAR_GET_BACKUP_"
}

