#!/bin/sh
# If you only have a bash 4.x, you can test with compat 3.1 bash
# shopt -s compat31
FOO="var_with_two_words='foo bar' other_var='baz'"
# An "env variable" definer that use the read command to parse and define the env variable
define() {
IFS=\= read -r key value <<EOF
$1
EOF
# Unquotting the value, adapt as it fit your needs
value="${value#\'}"
value="${value%\'}"
read "${key}" << EOF
${value}
EOF
}
# Using the set command to "parse" the variables string
set ${FOO}
while [ "$1" ] ; do
define "$1"
shift
done
echo "var_with_two_words=${var_with_two_words}"
echo "other_var=${other_var}"
IyEvYmluL3NoCiMgSWYgeW91IG9ubHkgaGF2ZSBhIGJhc2ggNC54LCB5b3UgY2FuIHRlc3Qgd2l0aCBjb21wYXQgMy4xIGJhc2gKIyBzaG9wdCAtcyBjb21wYXQzMQpGT089InZhcl93aXRoX3R3b193b3Jkcz0nZm9vIGJhcicgb3RoZXJfdmFyPSdiYXonIgojIEFuICJlbnYgdmFyaWFibGUiIGRlZmluZXIgdGhhdCB1c2UgdGhlIHJlYWQgY29tbWFuZCB0byBwYXJzZSBhbmQgZGVmaW5lIHRoZSBlbnYgIHZhcmlhYmxlCmRlZmluZSgpIHsKICBJRlM9XD0gcmVhZCAtciBrZXkgdmFsdWUgPDxFT0YKJDEKRU9GCgogICMgVW5xdW90dGluZyB0aGUgdmFsdWUsIGFkYXB0IGFzIGl0IGZpdCB5b3VyIG5lZWRzCiAgdmFsdWU9IiR7dmFsdWUjXCd9IgogIHZhbHVlPSIke3ZhbHVlJVwnfSIKICByZWFkICIke2tleX0iIDw8IEVPRgoke3ZhbHVlfQpFT0YKCn0KIyBVc2luZyB0aGUgc2V0IGNvbW1hbmQgdG8gInBhcnNlIiB0aGUgdmFyaWFibGVzIHN0cmluZwpzZXQgJHtGT099CndoaWxlIFsgIiQxIiBdIDsgZG8KICBkZWZpbmUgIiQxIgogIHNoaWZ0CmRvbmUKZWNobyAidmFyX3dpdGhfdHdvX3dvcmRzPSR7dmFyX3dpdGhfdHdvX3dvcmRzfSIKZWNobyAib3RoZXJfdmFyPSR7b3RoZXJfdmFyfSIK