2017-09-04 55 views
1

我正試圖在bash中編寫一個腳本,用於爲同一應用程序的多個實例執行相同的操作 - 在不同的端口上運行。我目前的做法是使用這樣一個數組:bash - 數組鍵名中的冒號

INSTANCES=('localhost:50010' 'localhost:50011' 'localhost:50012') 
for INSTANCE in ${INSTANCES[@]}; do 
    A["$INSTANCE"]="$(do stuff with $INSTANCE)" 
    B["$INSTANCE"]="$(do more stuff with $INSTANCE)" 
done 

擊似乎拒絕這個,因爲在數組鍵名冒號:

bash: localhost:50010: syntax error in expression (error token is ":50010") 

我想這是得到的東西做的Shell Parameter Expansion或類似的東西。有沒有什麼方法可以實現我在嘗試而不操縱$INSTANCE的內容?

在此先感謝!

回答

2

冒號非常被接受爲關聯數組的數組鍵名。

你只需要首先聲明你的關聯數組:

declare -A A B 
+1

有時是最明顯和最簡單的東西,可以讓你發瘋。謝謝。 – David