0

你好我想问一个在这里重复的问题。

我在 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

服务器1进程

它给我的输出如下 -

服务器 server1

服务器1进程

有人可以帮忙吗。您还可以告诉我如何将新元素附加到数组中吗?我尝试了以下方法,但它不起作用 -

sleep 10 &
arrayName=$current_server"process"
eval "\${$arrayName[*]}+=$!"
4

1 回答 1

1

尝试替换第 8 行:

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

和:

eval "$arrayName=(10 20 30 40)"
于 2012-08-25T11:08:04.710 回答