0
你好,我想问一个重复的问题here。bash脚本变量数组名
我有四个服务器在bash脚本中定义如下代码。 对于每个服务器,我想维护我已经启动的进程的ID。 仅用于测试,我想用10 20 30 40初始化每个阵列。 然后看看我是否可以按预期访问这些元素。但是我无法访问这些元素。 有人能告诉我我究竟做错了什么。
#!/bin/bash
SERVER_LIST=("server1" "server2" "server3")
for server in ${SERVER_LIST[@]} ; do
echo $server
arrayName=$server"process"
echo $arrayName
set -a "$arrayName=(10 20 30 40)"
done
current_sever=${SERVER_LIST[0]}
arrayName=$current_server"process"
# The attempt below is failing.
eval "echo Server ${current_server} \${$arrayName[*]}"
echo $(eval echo \${arrayName[*]})Server server1
server1process
它给我的输出如下 -
服务器server1的
server1process
有人可以帮助请。 也可以请你告诉我如何追加新的元素到数组? 我尝试以下,但它不工作 -
sleep 10 &
arrayName=$current_server"process"
eval "\${$arrayName[*]}+=$!"
请参见[BashFAQ/005](HTTP: //mywiki.wooledge.org/BashFAQ/005)和[BashFAQ/006](http://mywiki.wooledge.org/BashFAQ/006)。 – 2012-08-03 22:32:51
[Bash:使用变量作为数组名称]的可能重复(http://stackoverflow.com/questions/8045474/bash-use-a-variable-as-an-array-name) – 2012-08-06 04:13:35