Iterar sobre matriz bash

1

Eu quero usar os valores de um array para apontar para valores em outro, mas não consigo descobrir. Eu acho que isso é muito básico. Eu gostaria que o arquivo produzisse uma linha associada a cada um dos x, y, z da seguinte maneira: x XValue, y Yvalue, Z Zvalue, mas acabei de obter a primeira linha.

#! /bin/bash
declare -a id
declare -A header

id=( x y z )

header[x]="X Value"
header[y]="Y Value"
header[z]="Z Value"

for ident in $id
do
    echo $ident ${header[${ident}]}
done
    
por R Wigle 08.12.2015 / 03:28

1 resposta

5

Você precisa usar ${id[@]} para indicar todos os elementos da matriz id :

$ for i in "${id[@]}"; do echo "This is "${header["$i"]}""; done
This is X Value
This is Y Value
This is Z Value

Enquanto você está recebendo apenas o primeiro elemento usando $id :

$ for i in "$id"; do echo "This is "${header["$i"]}""; done
This is X Value
    
por 08.12.2015 / 03:32