0

こんにちは、ここで繰り返される質問をしたいと思います。

以下のコードのように定義されたbashスクリプトに4つのサーバーがあります。サーバーごとに、そのサーバーで開始したプロセスの 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 に答える