#!/usr/bin/env bash
FOO="SYSCFG_lan_ifname='br1' SYSCFG_lan_ipaddr='10.0.0.1' SYSCFG_lan_netmask='255.255.255.0'"
case $BASH_VERSION in
''|[1-3].*) echo "ERROR: Bash 4.0+ required" >&2; exit 1;;
esac
declare -A kwargs=( )
while IFS= read -r -d ''; do
[[ $REPLY = *=* ]] || {
printf 'ERROR: Item %q is not in assignment form\n' "$REPLY" >&2
continue
}
kwargs[${REPLY%%=*}]=${REPLY#*=}
done < <(xargs printf '%s\0' <<<"$FOO")
# show what we parsed for demonstration purposes
declare -p kwargs >&2
IyEvdXNyL2Jpbi9lbnYgYmFzaApGT089IlNZU0NGR19sYW5faWZuYW1lPSdicjEnIFNZU0NGR19sYW5faXBhZGRyPScxMC4wLjAuMScgU1lTQ0ZHX2xhbl9uZXRtYXNrPScyNTUuMjU1LjI1NS4wJyIKCmNhc2UgJEJBU0hfVkVSU0lPTiBpbgogICcnfFsxLTNdLiopIGVjaG8gIkVSUk9SOiBCYXNoIDQuMCsgcmVxdWlyZWQiID4mMjsgZXhpdCAxOzsKZXNhYwoKZGVjbGFyZSAtQSBrd2FyZ3M9KCApCndoaWxlIElGUz0gcmVhZCAtciAtZCAnJzsgZG8KICBbWyAkUkVQTFkgPSAqPSogXV0gfHwgewogICAgcHJpbnRmICdFUlJPUjogSXRlbSAlcSBpcyBub3QgaW4gYXNzaWdubWVudCBmb3JtXG4nICIkUkVQTFkiID4mMgogICAgY29udGludWUKICB9CiAga3dhcmdzWyR7UkVQTFklJT0qfV09JHtSRVBMWSMqPX0KZG9uZSA8IDwoeGFyZ3MgcHJpbnRmICclc1wwJyA8PDwiJEZPTyIpCgojIHNob3cgd2hhdCB3ZSBwYXJzZWQgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMKZGVjbGFyZSAtcCBrd2FyZ3MgPiYy