2017-07-14 18 views
1

bashで連想配列を作るループを作ることは可能ですか?私はこれらの線に沿って何かをしたいと思います
....ループ内で動的に名前付きの連想配列をbash内に作成する

number_of_servers=10; 
COUNTER=1 

while [ $COUNTER -le ${number_of_servers} ]; do 
    declare -A "server_${COUNTER}" 
    COUNTER=$((COUNTER+1)) 
done 

多くの感謝!

+1

あなたはそれを試してみましたか?それはまさにあなたが望むものです。 (ファイル内に100個の配列を宣言し、それをソース化する前に、 'declare -A server_ {1..10}') – rici

+0

に感謝します。しかし、number_of_servers変数を動的に入力する方法はありますか?私は宣言しようとしました-A server_ {1 ... $ {number_of_servers}}が失敗しました。 – JRD

+0

中カッコ表記では変数を使用できません。可変範囲が必要な場合は、ループを使用します。あなたは 'eval'でこれを回避することができますが、私は個人的に' eval'を避けようとしています。 –

答えて

0

あなたのコードがすでに動作します:

$ for index in 1 2 
> do 
>  declare -A "server_${index}" 
> done 
$ declare -p server_1 
declare -A server_1 
$ declare -p server_2 
declare -A server_2 

をあなたは@rici pointed outのようにそれを簡素化することができます:

$ declare -A server_{3..4} 
$ declare -p server_4 
declare -A server_4 

それともdynamically declareそれ:

$ number_of_servers=10 
$ declare -A $(printf 'server_%d ' $(seq "$number_of_servers")) 
$ declare -p server_10 
declare -A server_10 
関連する問題