bash脚本变量数组名称

时间:2012-08-03 22:23:17

标签: bash shell

您好我想问一个重复的问题here

我在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[*]}+=$!"

1 个答案:

答案 0 :(得分:1)

尝试更换第8行:

set -a "$arrayName=(10 20 30 40)"

使用:

eval "$arrayName=(10 20 30 40)"