这应该将整个关联数组打印到控制台:
#!/bin/sh
declare -a array=([key1]='value1' [key2]='value2')
for key in ${!array[@]}; do
echo "Key = $key"
echo "Value = ${array[$key]}"
done
echo ${array[key1]}
echo ${array[key2]}
Run Code Online (Sandbox Code Playgroud)
相反,它打印oly最后一个变量:
[mles@sagnix etl-i_test]$ ./test.sh
Key = 0
Value = value2
value2
value2
Run Code Online (Sandbox Code Playgroud)
我的错在哪里?
@htor:Bash版本是3.2.25(1) - 发布.
小智 6
Bash 4及更新版本支持关联数组.使用该-a选项声明的数组只是一个常规数组,可以用整数而不是键来索引.此声明导致数组包含一个元素value2.当迭代使用for key in ${!array[@]}值为$keyis 的键时,0您将获得第一个元素.
鉴于您在尝试使用-A声明数组时得到的错误输出,我假设您的Bash版本早于4.检查变量$BASH_VERSION.
有关数组的更深入解释,请参阅http://mywiki.wooledge.org/BashGuide/Arrays.
| 归档时间: |
|
| 查看次数: |
5045 次 |
| 最近记录: |