В этом очень упрощенном примере, мне нужно обратиться как ключ и значение массива элемента:Bash косвенной ссылкой на ассоциативный массив
declare -A writer
writer[H.P.]=Lovecraft
writer[Stephen]=King
writer[Clive]=Barker
writer[Jack]=Ketchum
for i in ${!writer[@]}
do
echo "$i ${writer[$i]}"
done
fullname()
{
pointer=$1[@]
for i in "${!pointer}"
do
echo "? $i"
done
}
fullname writer
Функция должна отображать вывод в том же формате, как например, петли перед ним, и он должен получить либо имя массива, список ключей или значений, все из которых я пробовал, но безуспешно. Любые предложения приветствуются.
Это можно сделать более безопасным путем проверки того, что '$ 1' и' $ 2' являются * справедливыми * действительными идентификаторами, например, с помощью '[[$ 1 = ~ [A-Za-z _] [A-Za- z0-9 _] +]] || return'. – chepner