# HG changeset patch # User Franz Glasner # Date 1725884031 -7200 # Node ID b0148ccbc459e57af90d5a622a3bc0ebf600d60d # Parent 33b55434d0394ac30c4c3e1f1d910277674af549 farray.sh: handle most of the shellcheck suggestions diff -r 33b55434d039 -r b0148ccbc459 share/local-bsdtools/farray.sh --- a/share/local-bsdtools/farray.sh Mon Sep 09 13:31:58 2024 +0200 +++ b/share/local-bsdtools/farray.sh Mon Sep 09 14:13:51 2024 +0200 @@ -72,6 +72,9 @@ #: +# shellcheck disable=2004,2166,3003,3043 + + _farr_array_prefix=_farr_A_ _farr_alist_prefix=_farr_KV_ _farr_alist_key_prefix=_farr_K_ @@ -154,7 +157,7 @@ __farr_name="${1-}" [ -z "${__farr_name}" ] && _farr_fatal "missing farray name" - eval __farr_token=\"\${${__farr_name}-}\" + eval __farr_token=\"\$\{"${__farr_name}"-\}\" [ -n "${__farr_token}" ] && _farr_fatal "object \`${__farr_name}' already created (token \`${__farr_token}')" __farr_token="$(/usr/bin/hexdump -v -e '/1 "%02x"' -n 16 '/dev/urandom')" @@ -163,13 +166,13 @@ shift # Check whether the variable already exists - eval __farr_len=\${${__farr_gvrname}__+SET} + eval __farr_len=\$\{${__farr_gvrname}__+SET\} [ -n "${__farr_len}" ] && _farr_fatal "farray \`${__farr_name}' already exists: existing token \`${__farr_token}'" # Really create the storage by initializing its length eval ${__farr_gvrname}__=0 # And associate the token with the array name - eval ${__farr_name}="${__farr_token}" + eval "${__farr_name}"="${__farr_token}" for __farr_el in "$@"; do farray_append ${__farr_name} "${__farr_el}" @@ -195,13 +198,14 @@ _farr_array_get_meta() { __farr_name="${1-}" [ -z "${__farr_name}" ] && _farr_fatal "missing farray name" - eval __farr_token=\"\${${__farr_name}-}\" + eval __farr_token=\"\$\{"${__farr_name}"-\}\" [ -z "${__farr_token}" ] && _farr_fatal "farray \`${__farr_name}' does not exist: token empty" __farr_gvrname="${_farr_array_prefix}${__farr_token}" - eval __farr_len=\${${__farr_gvrname}__:+SET} + eval __farr_len=\$\{${__farr_gvrname}__:+SET\} [ -z "${__farr_len}" ] && _farr_fatal "farray \`${__farr_name}' does not exist: no storage for token \`${__farr_token}'" - eval __farr_len="\$((\${${__farr_gvrname}__} + 0))" +# eval __farr_len="\$((\${${__farr_gvrname}__} + 0))" + eval __farr_len="\$((${__farr_gvrname}__ + 0))" return 0 } @@ -230,19 +234,20 @@ __farr_token="" __farr_gvrname="" __farr_len="" - eval __farr_token=\"\${${__farr_name}-}\" + eval __farr_token=\"\$\{"${__farr_name}"-\}\" if [ -z "${__farr_token}" ]; then _farr_err "farray \`${__farr_name}' does not exist: token empty" return 1; fi __farr_gvrname="${_farr_array_prefix}${__farr_token}" - eval __farr_len=\${${__farr_gvrname}__:+SET} + eval __farr_len=\$\{${__farr_gvrname}__:+SET\} if [ -z "${__farr_len}" ]; then _farr_err "farray \`${__farr_name}' does not exist: no storage for token \`${__farr_token}'" return 1 fi - eval __farr_len="\$((\${${__farr_gvrname}__} + 0))" + # eval __farr_len="\$((\${${__farr_gvrname}__} + 0))" + eval __farr_len="\$((${__farr_gvrname}__ + 0))" return 0 } @@ -263,7 +268,7 @@ [ -z "${__farr_varname}" ] && _farr_fatal "missing variable name" shift _farr_array_get_meta "$@" - eval ${__farr_varname}=${__farr_len} + eval "${__farr_varname}"=${__farr_len} } @@ -305,7 +310,7 @@ __farr_value="${2-}" - __farr_len_1=$((${__farr_len} + 1)) + __farr_len_1=$((__farr_len + 1)) # # Set value @@ -342,7 +347,7 @@ __farr_index="${2-}" [ -z "${__farr_index}" ] && _farr_fatal "no valid index for set given" # make it to a number - __farr_index=$((${__farr_index} + 0)) + __farr_index=$((__farr_index + 0)) __farr_value="${3-}" # For proper quoting: see farray_append @@ -350,7 +355,7 @@ # replace a value at an existing index eval ${__farr_gvrname}_${__farr_index}=\$\'"$(_farr_quote_for_eval_dsq "${__farr_value}")"\' else - __farr_len_1=$((${__farr_len} + 1)) + __farr_len_1=$((__farr_len + 1)) if [ ${__farr_index} -eq ${__farr_len_1} ]; then # append value eval ${__farr_gvrname}_${__farr_len_1}=\$\'"$(_farr_quote_for_eval_dsq "${__farr_value}")"\' @@ -383,14 +388,14 @@ __farr_index="${2-}" [ -z "${__farr_index}" ] && _farr_fatal "no valid index given" # make it to a number - __farr_index=$((${__farr_index} + 0)) + __farr_index=$((__farr_index + 0)) # check index range if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt ${__farr_len} \) ]; then _farr_fatal "array index out of bounds" fi - eval ${__farr_varname}=\"\${${__farr_gvrname}_${__farr_index}}\" + eval "${__farr_varname}"=\"\$\{${__farr_gvrname}_${__farr_index}\}\" } @@ -423,14 +428,14 @@ __farr_index="${2-}" [ -z "${__farr_index}" ] && _farr_fatal "no valid index given" # make it to a number - __farr_index=$((${__farr_index} + 0)) + __farr_index=$((__farr_index + 0)) # check index range if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt ${__farr_len} \) ]; then return 1 fi - eval ${__farr_varname}=\"\${${__farr_gvrname}_${__farr_index}}\" + eval "${__farr_varname}"=\"\$\{${__farr_gvrname}_${__farr_index}\}\" return 0 } @@ -452,22 +457,22 @@ __farr_index="${2-}" [ -z "${__farr_index}" ] && _farr_fatal "no valid index given" # make it to a number - __farr_index=$((${__farr_index} + 0)) + __farr_index=$((__farr_index + 0)) # check index range if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt ${__farr_len} \) ]; then _farr_fatal "array index out of bounds" fi - __farr_new_len=$((${__farr_len} - 1)) + __farr_new_len=$((__farr_len - 1)) __farr_idx=${__farr_index} - __farr_idx_1=$((${__farr_idx} + 1)) + __farr_idx_1=$((__farr_idx + 1)) while [ ${__farr_idx} -lt ${__farr_len} ]; do # copy the following value to the current index - eval __farr_value=\"\${${__farr_gvrname}_${__farr_idx_1}}\" + eval __farr_value=\"\$\{${__farr_gvrname}_${__farr_idx_1}\}\" eval ${__farr_gvrname}_${__farr_idx}=\$\'"$(_farr_quote_for_eval_dsq "${__farr_value}")"\' - __farr_idx=$((${__farr_idx} + 1)) - __farr_idx_1=$((${__farr_idx} + 1)) + __farr_idx=$((__farr_idx + 1)) + __farr_idx_1=$((__farr_idx + 1)) done # Drop the last item eval unset ${__farr_gvrname}_${__farr_idx} @@ -492,7 +497,7 @@ __farr_idx=1 while [ ${__farr_idx} -le ${__farr_len} ]; do eval unset ${__farr_gvrname}_${__farr_idx} - __farr_idx=$((${__farr_idx} + 1)) + __farr_idx=$((__farr_idx + 1)) done # Length is now zero @@ -523,7 +528,7 @@ __farr_idx=1 while [ ${__farr_idx} -le ${__farr_len} ]; do eval unset ${__farr_gvrname}_${__farr_idx} - __farr_idx=$((${__farr_idx} + 1)) + __farr_idx=$((__farr_idx + 1)) done # Remove length itselt @@ -557,9 +562,9 @@ __farr_idx=1 while [ ${__farr_idx} -le ${__farr_len} ]; do - eval __farr_existing_value=\"\${${__farr_gvrname}_${__farr_idx}}\" + eval __farr_existing_value=\"\$\{${__farr_gvrname}_${__farr_idx}\}\" [ "${__farr_existing_value}" = "${__farr_searched_value}" ] && return 0 - __farr_idx=$((${__farr_idx} + 1)) + __farr_idx=$((__farr_idx + 1)) done return 1 } @@ -605,13 +610,13 @@ __farr_cur_idx=${__farr_start} while [ ${__farr_cur_idx} -le ${__farr_end} ]; do - eval __farr_existing_value=\"\${${__farr_gvrname}_${__farr_cur_idx}}\" + eval __farr_existing_value=\"\$\{${__farr_gvrname}_${__farr_cur_idx}\}\" if [ "${__farr_existing_value}" = "${__farr_searched_value}" ]; then #printf "%d" ${__farr_cur_idx} - eval ${__farr_varname}=${__farr_cur_idx} + eval "${__farr_varname}"=${__farr_cur_idx} return 0 fi - __farr_cur_idx=$((${__farr_cur_idx} + 1)) + __farr_cur_idx=$((__farr_cur_idx + 1)) done return 1 } @@ -645,12 +650,12 @@ __farr_join_idx=1 while [ ${__farr_join_idx} -le ${__farr_len} ]; do - eval __farr_current_value=\"\${${__farr_gvrname}_${__farr_join_idx}}\" + eval __farr_current_value=\"\$\{${__farr_gvrname}_${__farr_join_idx}\}\" __farr_command="${__farr_command}${__farr_real_separator}${__farr_current_value}" __farr_real_separator="${__farr_separator}" - __farr_join_idx=$((${__farr_join_idx} + 1)) + __farr_join_idx=$((__farr_join_idx + 1)) done - eval ${__farr_varname}=\"\${__farr_command}\" + eval "${__farr_varname}"=\"\$\{__farr_command\}\" } @@ -689,12 +694,12 @@ __farr_join_idx=1 while [ ${__farr_join_idx} -le ${__farr_len} ]; do - eval __farr_current_value=\"\${${__farr_gvrname}_${__farr_join_idx}}\" + eval __farr_current_value=\"\$\{${__farr_gvrname}_${__farr_join_idx}\}\" __farr_command="${__farr_command}${__farr_real_separator}\$'$(_farr_quote_for_eval_dsq "${__farr_current_value}")'" __farr_real_separator=' ' - __farr_join_idx=$((${__farr_join_idx} + 1)) + __farr_join_idx=$((__farr_join_idx + 1)) done - eval ${__farr_varname}=\"\${__farr_command}\" + eval "${__farr_varname}"=\"\$\{__farr_command\}\" } @@ -722,12 +727,12 @@ __farr_join_idx=1 while [ ${__farr_join_idx} -le ${__farr_len} ]; do - eval __farr_current_value=\"\${${__farr_gvrname}_${__farr_join_idx}}\" + eval __farr_current_value=\"\$\{${__farr_gvrname}_${__farr_join_idx}\}\" if [ ${__farr_join_idx} -gt 1 ]; then printf "%s" " " fi printf "%s" "\$'$(_farr_quote_for_eval_dsq "${__farr_current_value}")'" - __farr_join_idx=$((${__farr_join_idx} + 1)) + __farr_join_idx=$((__farr_join_idx + 1)) done } @@ -767,7 +772,7 @@ eval "${__farr_callback} ${__farr_name} ${__farr_idx} \"\${${__farr_gvrname}_${__farr_idx}}\"" __farr_rv=$? [ ${__farr_rv} -ne 0 ] && return ${__farr_rv} - __farr_idx=$((${__farr_idx} + 1)) + __farr_idx=$((__farr_idx + 1)) done return 0 } @@ -790,7 +795,7 @@ eval "${__farr_callback} ${__farr_name} ${__farr_idx} \"\${${__farr_gvrname}_${__farr_idx}}\"" __farr_rv=$? [ ${__farr_rv} -ne 0 ] && return ${__farr_rv} - __farr_idx=$((${__farr_idx} - 1)) + __farr_idx=$((__farr_idx - 1)) done return 0 } @@ -850,7 +855,7 @@ __farr_name="${1-}" [ -z "${__farr_name}" ] && _farr_fatal "missing falist name" - eval __farr_token=\"\${${__farr_name}-}\" + eval __farr_token=\"\$\{"${__farr_name}"-\}\" [ -n "${__farr_token}" ] && _farr_fatal "object \`${__farr_name}' already created (token \`${__farr_token}')" __farr_token="$(/usr/bin/hexdump -v -e '/1 "%02x"' -n 16 '/dev/urandom')" @@ -860,14 +865,14 @@ __farr_valname=${_farr_alist_value_prefix}${__farr_token} # Check whether the variable already exists - eval __farr_len=\${${__farr_objname}__+SET} + eval __farr_len=\$\{${__farr_objname}__+SET\} [ -n "${__farr_len}" ] && _farr_fatal "falist \`${__farr_name}' already exists: existing token \`${__farr_token}'" # Really create the storage by initializing its length eval ${__farr_objname}__=0 # And associate the token with the array name - eval ${__farr_name}="${__farr_token}" + eval "${__farr_name}"="${__farr_token}" } @@ -891,16 +896,17 @@ _farr_alist_get_meta() { __farr_name="${1-}" [ -z "${__farr_name}" ] && _farr_fatal "missing farray name" - eval __farr_token=\"\${${__farr_name}-}\" + eval __farr_token=\"\$\{"${__farr_name}"-\}\" [ -z "${__farr_token}" ] && _farr_fatal _farr_err "falist \`${__farr_name}' does not exist: token empty" __farr_objname="${_farr_alist_prefix}${__farr_token}" __farr_keyname=${_farr_alist_key_prefix}${__farr_token} __farr_valname=${_farr_alist_value_prefix}${__farr_token} - eval __farr_len=\${${__farr_objname}__:+SET} + eval __farr_len=\$\{${__farr_objname}__:+SET\} [ -z "${__farr_len}" ] && _farr_fatal "falist \`${__farr_name}' does not exist: no object for token \`${__farr_token}'" - eval __farr_len="\$((\${${__farr_objname}__} + 0))" + # eval __farr_len="\$((\${${__farr_objname}__} + 0))" + eval __farr_len="\$((${__farr_objname}__ + 0))" return 0 } @@ -933,7 +939,7 @@ __farr_keyname="" __farr_valname="" __farr_len="" - eval __farr_token=\"\${${__farr_name}-}\" + eval __farr_token=\"\$\{"${__farr_name}"-\}\" if [ -z "${__farr_token}" ]; then _farr_err "falist \`${__farr_name}' does not exist: token empty" return 1; @@ -943,12 +949,13 @@ __farr_keyname=${_farr_alist_key_prefix}${__farr_token} __farr_valname=${_farr_alist_value_prefix}${__farr_token} - eval __farr_len=\${${__farr_objname}__:+SET} + eval __farr_len=\$\{${__farr_objname}__:+SET\} if [ -z "${__farr_len}" ]; then _farr_err "falist \`${__farr_name}' does not exist: no object for token \`${__farr_token}'" return 1 fi - eval __farr_len="\$((\${${__farr_objname}__} + 0))" + # eval __farr_len="\$((\${${__farr_objname}__} + 0))" + eval __farr_len="\$((${__farr_objname}__ + 0))" return 0 } @@ -969,7 +976,7 @@ [ -z "${__farr_varname}" ] && _farr_fatal "missing variable name" shift _farr_alist_get_meta "$@" - eval ${__farr_varname}=${__farr_len} + eval "${__farr_varname}"=${__farr_len} } @@ -1013,7 +1020,7 @@ while [ ${__farr_idx} -le ${__farr_len} ]; do eval unset ${__farr_valname}_${__farr_idx} eval unset ${__farr_keyname}_${__farr_idx} - __farr_idx=$((${__farr_idx} + 1)) + __farr_idx=$((__farr_idx + 1)) done # Reset object (length) itself @@ -1047,7 +1054,7 @@ while [ ${__farr_idx} -le ${__farr_len} ]; do eval unset ${__farr_valname}_${__farr_idx} eval unset ${__farr_keyname}_${__farr_idx} - __farr_idx=$((${__farr_idx} + 1)) + __farr_idx=$((__farr_idx + 1)) done # Remove object (length) itselt @@ -1084,9 +1091,9 @@ __farr_idx=1 while [ ${__farr_idx} -le ${__farr_len} ]; do - eval __farr_elkey=\"\${${__farr_keyname}_${__farr_idx}+SET}\" + eval __farr_elkey=\"\$\{${__farr_keyname}_${__farr_idx}+SET\}\" if [ -n "${__farr_elkey}" ]; then - eval __farr_elkey=\"\${${__farr_keyname}_${__farr_idx}}\" + eval __farr_elkey=\"\$\{${__farr_keyname}_${__farr_idx}\}\" if [ "${__farr_elkey}" = "${__farr_key}" ]; then eval ${__farr_valname}_${__farr_idx}=\$\'"$(_farr_quote_for_eval_dsq "${__farr_value}")"\' return 0 @@ -1094,7 +1101,7 @@ else _farr_fatal "key unexpectedly unset (index ${__farr_idx})" 1>&2 fi - __farr_idx=$((${__farr_idx} + 1)) + __farr_idx=$((__farr_idx + 1)) done # # Not yet found: "append" .. @@ -1139,17 +1146,17 @@ __farr_idx=1 while [ ${__farr_idx} -le ${__farr_len} ]; do - eval __farr_getkey=\"\${${__farr_keyname}_${__farr_idx}+SET}\" + eval __farr_getkey=\"\$\{${__farr_keyname}_${__farr_idx}+SET\}\" if [ -n "${__farr_getkey}" ]; then - eval __farr_getkey=\"\${${__farr_keyname}_${__farr_idx}}\" + eval __farr_getkey=\"\$\{${__farr_keyname}_${__farr_idx}\}\" if [ "${__farr_getkey}" = "${__farr_key}" ]; then - eval ${__farr_varname}=\"\${${__farr_valname}_${__farr_idx}}\" + eval "${__farr_varname}"=\"\$\{${__farr_valname}_${__farr_idx}\}\" return 0 fi else _farr_fatal "key unexpectedly unset (index ${__farr_idx})" 1>&2 fi - __farr_idx=$((${__farr_idx} + 1)) + __farr_idx=$((__farr_idx + 1)) done _farr_fatal "alist \`${__farr_name}': key \`${__farr_key}' not found" } @@ -1183,17 +1190,17 @@ __farr_idx=1 while [ ${__farr_idx} -le ${__farr_len} ]; do - eval __farr_getkey=\"\${${__farr_keyname}_${__farr_idx}+SET}\" + eval __farr_getkey=\"\$\{${__farr_keyname}_${__farr_idx}+SET\}\" if [ -n "${__farr_getkey}" ]; then - eval __farr_getkey=\"\${${__farr_keyname}_${__farr_idx}}\" + eval __farr_getkey=\"\$\{${__farr_keyname}_${__farr_idx}\}\" if [ "${__farr_getkey}" = "${__farr_key}" ]; then - eval ${__farr_varname}=\"\${${__farr_valname}_${__farr_idx}}\" + eval "${__farr_varname}"=\"\$\{${__farr_valname}_${__farr_idx}\}\" return 0 fi else _farr_fatal "key unexpectedly unset (index ${__farr_idx})" fi - __farr_idx=$((${__farr_idx} + 1)) + __farr_idx=$((__farr_idx + 1)) done return 1 } @@ -1231,9 +1238,9 @@ __farr_index=$(($2 + 0)) if [ \( ${__farr_index} -ge 1 \) -a \( ${__farr_index} -le ${__farr_len} \) ]; then - eval __farr_getikey=\"\${${__farr_keyname}_${__farr_index}+SET}\" + eval __farr_getikey=\"\$\{${__farr_keyname}_${__farr_index}+SET\}\" if [ -n "${__farr_getikey}" ]; then - eval ${__farr_varname}=\"\${${__farr_keyname}_${__farr_index}}\" + eval "${__farr_varname}"=\"\$\{${__farr_keyname}_${__farr_index}\}\" return 0 else _farr_fatal "key unexpectedly unset (index ${__farr_index})" @@ -1276,9 +1283,9 @@ __farr_index=$(($2 + 0)) if [ \( ${__farr_index} -ge 1 \) -a \( ${__farr_index} -le ${__farr_len} \) ]; then - eval __farr_getival=\"\${${__farr_valname}_${__farr_index}+SET}\" + eval __farr_getival=\"\$\{${__farr_valname}_${__farr_index}+SET\}\" if [ -n "${__farr_getival}" ]; then - eval ${__farr_varname}=\"\${${__farr_valname}_${__farr_index}}\" + eval "${__farr_varname}"=\"\$\{${__farr_valname}_${__farr_index}\}\" return 0 else _farr_fatal "value unexpectedly unset (index ${__farr_index})" @@ -1312,16 +1319,16 @@ __farr_idx=1 while [ ${__farr_idx} -le ${__farr_len} ]; do - eval __farr_cokey=\"\${${__farr_keyname}_${__farr_idx}+SET}\" + eval __farr_cokey=\"\$\{${__farr_keyname}_${__farr_idx}+SET\}\" if [ -n "${__farr_cokey}" ]; then - eval __farr_cokey=\"\${${__farr_keyname}_${__farr_idx}}\" + eval __farr_cokey=\"\$\{${__farr_keyname}_${__farr_idx}\}\" if [ "${__farr_cokey}" = "${__farr_key}" ]; then return 0 fi else _farr_fatal "key unexpectedly unset (index ${__farr_idx})" 1>&2 fi - __farr_idx=$((${__farr_idx} + 1)) + __farr_idx=$((__farr_idx + 1)) done return 1 } @@ -1360,12 +1367,12 @@ __farr_feidx=1 while [ ${__farr_feidx} -le ${__farr_len} ]; do - eval __farr_fekey=\"\${${__farr_keyname}_${__farr_feidx}+SET}\" + eval __farr_fekey=\"\$\{${__farr_keyname}_${__farr_feidx}+SET\}\" if [ -n "${__farr_fekey}" ]; then - eval __farr_fekey=\"\${${__farr_keyname}_${__farr_feidx}}\" - eval __farr_feval=\"\${${__farr_valname}_${__farr_feidx}+SET}\" + eval __farr_fekey=\"\$\{${__farr_keyname}_${__farr_feidx}\}\" + eval __farr_feval=\"\$\{${__farr_valname}_${__farr_feidx}+SET\}\" if [ -n "${__farr_feval}" ]; then - eval __farr_feval=\"\${${__farr_valname}_${__farr_feidx}}\" + eval __farr_feval=\"\$\{${__farr_valname}_${__farr_feidx}\}\" eval "${__farr_callback} ${__farr_name} \"\${__farr_fekey}\" \"\${__farr_feval}\" ${__farr_feidx}" __farr_rv=$? [ ${__farr_rv} -ne 0 ] && return ${__farr_rv} @@ -1375,7 +1382,7 @@ else _farr_fatal "alist \`${__farr_name}': missing value index" fi - __farr_feidx=$((${__farr_feidx} + 1)) + __farr_feidx=$((__farr_feidx + 1)) done return 0 } @@ -1404,20 +1411,20 @@ echo "DEBUG: alist \`${__farr_name}' has length ${__farr_len}" 1>&2 __farr_idx=1 while [ ${__farr_idx} -le ${__farr_len} ]; do - eval __farr_el_key=\"\${${__farr_keyname}_${__farr_idx}+SET}\" + eval __farr_el_key=\"\$\{${__farr_keyname}_${__farr_idx}+SET\}\" if [ -z "${__farr_el_key}" ]; then echo "DEBUG: key unexpectedly unset (index ${__farr_idx})" 1>&2 fi - eval __farr_el_val=\"\${${__farr_valname}_${__farr_idx}+SET}\" + eval __farr_el_val=\"\$\{${__farr_valname}_${__farr_idx}+SET\}\" if [ -z "${__farr_el_val}" ]; then echo "DEBUG: value unexpectedly unset (index ${__farr_idx})" 1>&2 fi if [ \( -n "${__farr_el_key}" \) -a \( -n "${__farr_el_val}" \) ]; then - eval __farr_el_key=\"\${${__farr_keyname}_${__farr_idx}}\" - eval __farr_el_val=\"\${${__farr_valname}_${__farr_idx}}\" + eval __farr_el_key=\"\$\{${__farr_keyname}_${__farr_idx}\}\" + eval __farr_el_val=\"\$\{${__farr_valname}_${__farr_idx}\}\" printf "DEBUG: \`%s' -> \`%s'\\n" "${__farr_el_key}" "${__farr_el_val}" 1>&2 fi - __farr_idx=$((${__farr_idx} + 1)) + __farr_idx=$((__farr_idx + 1)) done return 0 }