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