Você está atribuindo a disks[worker01]
, mas tentando ler disks[0]
etc. Os índices são diferentes.
Como alguém comentou, o Bash não tem arrays multidimensionais, e é disso que você realmente precisaria aqui. Você pode simular isso com strings separadas por espaço, mas você precisa dividir a string explicitamente.
#!/bin/bash
declare -A disks
disks["host1"]="sda sdb"
disks["host2"]="sda sdb sdc"
for m in "${!disks[@]}"; do
# split the string to array 'd'
IFS=' ' read -a d <<< "${disks[$m]}"
printf "$m has disk %s\n" "${d[@]}"
done