【发布时间】:2016-07-24 14:54:57
【问题描述】:
我有一个数组
FIRST_ARRAY=(NEWYORK CALIFORNIA TEXAS)
接受一个州的脚本可以返回该州的城市
例如以下将返回:
user@localhost:~$ search NEWYORK cities
newyorkcity
buffalo
albany
user@localhost:~$ search CALIFORNIA cities
sanfrancisco
paloalto
losangeles
user@localhost:~$ search TEXAS cities
houston
dallas
austin
我想迭代 FIRST_ARRAY
for state in ${FIRST_ARRAY[@]}
do
cities=`search ${FIRST_ARRAY[state]} cities`
ARRAY_$state=($cities}
done
最后,我希望已经创建了以下数组,它们将包含以下值
ARRAY_NEWYORK=(newyorkcity buffalo albany)
ARRAY_CALIFORNIA=(sanfrancisco paloalto losangeles)
ARRAY_TEXAS=(houston dallas austin)
如果这可行,那么例如,我希望能够通过以下方式调用我的动态创建的数组来访问 austin
echo ${ARRAY_TEXAS[2]}
谢谢!
【问题讨论】:
-
不尝试动态命名变量。尝试在循环运行时动态命名数组。
-
哪个特定版本的bash? 4.0 和 4.3 都添加了相关的设施。
-
(旁白:您不应该对变量名使用全大写;请参阅pubs.opengroup.org/onlinepubs/009695399/basedefs/…,第四段,了解 POSIX 规范:环境变量命名约定 [表明小写命名空间保留给应用程序使用,而 OS 和 shell 工具将使用全大写];由于 shell 变量和环境变量名称存在于同一命名空间中,因此该约定也适用于 shell 变量。
标签: arrays bash associative-array