while IFS== read -r _var _val ; do
  expr "$_var" : '[a-zA-Z][a-zA-Z0-9_]*$' >&- && \
    eval [ -z \${$_var+UNSET} ] '&&' $_var="\$_val" '||' true || \
    printf %s\\n "$conf: $_var: bad variable name" >&2
done < "$conf" ; unset _var _val
