#!/bin/bash get_pool_declerations () { local SECTION_CONTENT SECTION_NAME local -n ARRAY="${1:?"get_pool_declerations: Array was not provided"}" local CONTENT="${2:?"get_pool_declerations: Content to be parsed was not provided"}" get_sections $POOL_BEGIN_REGEX ARRAY "$CONTENT" } get_pool_ranges () { local -n ARRAY="${1:?"get_pool_range: Variable not passed in"}" local CONTENT="${2:?"get_pool_range: Content not provided"}" while read line; do RANGE="${line/range /}" RANGE="${RANGE/;/}" ARRAY+=( "$RANGE" ) done <<< "$( grep -Eo $POOL_RANGE_REGEX <<< "$CONTENT" )" } test_pools () { local -a POOLS local CONTENT="${1:?"test_pools: Content not provided"}" get_pool_declerations POOLS "$CONTENT" for pool in ${!POOLS[@]}; do echo "POOL: $pool" POOL_CONTENT="${POOLS[$pool]}" local -a RANGES get_pool_ranges RANGES "$POOL_CONTENT" for range in ${!RANGES[@]}; do echo " RANGE: ${RANGES[$range]}" done unset RANGES done }