遍历 bash 数组

1 bash shell-script

我想使用一个数组的值来指向另一个数组中的值,但我想不通。我认为这是非常基本的。我希望该文件产生与 x、y、z 中的每一个相关联的一行,如下所示:x XValue、y Yvalue、Z Zvalue 但我只得到第一行。

#! /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
Run Code Online (Sandbox Code Playgroud)

hee*_*ayl 5

您需要使用${id[@]}来指示数组的所有元素id

$ for i in "${id[@]}"; do echo "This is "${header["$i"]}""; done
This is X Value
This is Y Value
This is Z Value
Run Code Online (Sandbox Code Playgroud)

虽然您仅使用$id以下方法获取第一个元素:

$ for i in "$id"; do echo "This is "${header["$i"]}""; done
This is X Value
Run Code Online (Sandbox Code Playgroud)