這是我正在讀取文件的函數,將每行按空格分隔並創建一個數組。我想使用數組中的第一個和第二個元素作爲關鍵數組的值和值。第一個元素是一個IP地址。對關聯數組使用變量(這是一個IP地址)給關聯數組提供了錯誤
function testRead {
NEWHOST_IPS_OUT=<my_file>
declare -a HOSTS_IP_ARR
while read line
do
if [[ -z "$line" ]] || [[ "$line" =~ "#" ]]; then
continue
fi
STR_ARRAY=($line)
HOST_IP=${STR_ARRAY[1]}
HOST_AZ=${STR_ARRAY[2]}
HOSTS_IP_ARR["$HOST_IP"]="${HOST_AZ}"
HOSTS_IP_ARR[hello]=2
done < "$NEWHOST_IPS_OUT"
}
問題&發現:
* declare -A doesn't work, using `GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)`
./test.sh:4號線:聲明:-A:無效選項 聲明:用法:申報[-afFirtx] [-p] [名稱[=值] ...]
* I tested with constant values using '-a' for an associative array. It worked
* On running this script I get the following error:
./test.sh:線14:127.0.0.1:語法錯誤:無效算術運算符(錯誤標記是」 .0.0.1" )
This is line 14: HOSTS_IP_ARR["$HOST_IP"]="${HOST_AZ}"
那麼解決此問題的最佳方法是什麼?你看到的代碼片段用ips和它們相應的區域讀取一個文件。我需要建立IP地址的關聯,以便1個IP只能在1個區域內使用。我是否定義了2個數組併爲兩者使用相同的索引?有沒有更好的方法來做到這一點?最後我想使用每個IP和相應的區域來做一些處理。 – user1071840
@ user1071840使用Bash4或awk –