Many time I see use case for expanding both keys and values of an array,
and every time it requires a loop.
Typical use case is with the dialog command. But there are other use
cases where having both key and value expanded would save a loop.
Example:
array=([1]=apple [3]=banana [2]=orange)
for k in "${!array[@]}"; do
v="${array[k]}"
printf '%s %s ' "$k" "$v"
done
printf \\n
I'd like some syntax to expand both keys and values into a single
scalar. Something like a at sign or another symbol meaning both are
expanded:
# Expand key values pairs as distinct arguments
printf '%s ' "${@array[@]}"
printf \\n
or
# Expand key values pairs as IFS joined string
printf %s\\n "${@array[*]}"
Consequently it could allow expanding the for loop with:
for k v in "${@array[@]}"; do
printf 'Key=%s\tValue=%s\n' "$k" "$v"
done
Although the for loop for this specific case would not be needed as it
could be expanded in one go as:
printf 'Key=%s\tValue=%s\n' "${@array[@]}"
But I figure there are other use case where iterating key and value
would be a QOL over indexing and assigning the value with statement
within the loop.
Obviously it would fit equally well with associative arrays.
--
Léa Gris