yaml_opt_bash_env() { local prefix="$1" key value while read-0 key value; do new_prefix="${prefix}_${key^^}" if [[ "$(echo "$value" | shyaml get-type)" == "struct" ]]; then echo "$value" | yaml_opt_bash_env "${new_prefix}" else printf "%s\0%s\0" "${new_prefix/-/_}" "$value" fi done < <(shyaml key-values-0) } yaml_opt_bash_env_ignore_first_level() { local prefix="$1" key value while read-0 key value; do new_prefix="${prefix}_${key^^}" if [[ "$(echo "$value" | shyaml get-type)" == "struct" ]]; then echo "$value" | yaml_opt_bash_env "${new_prefix}" fi done < <(shyaml key-values-0) }