3
我有file.properties,其中是鍵和值來定義:迭代陣列
key1=value1 value2 value3
key2=value4 value5 value6
key3=value7 value8 value9
我想要加載從文件陣列線。我不能使用申報-A創建因爲bash的3
的關聯數組在bash 4我的代碼是:
conf="./file.properties"
init() {
local configiration=$1
if [ -f "$conf" ]
then
while IFS='=' read -r key value
do
configuration[ ${key} ]=$value
done < "$conf"
fi}
declare -A configuration
init configuration
KEY="key value from file"
#KEY="key1" or KEY="key2" or KEY="key3"
SERVERS=${configuration[ $KEY ]}
我想要做同樣的工作,在bash的3。
conf="./file.properties"
init() {
key=()
value=()
if [ -f "$conf" ]
then
while IFS='=' read -r key value
do
key+=("$key")
value+=("$value")
done < "$conf"
fi}
init
KEY="key value from file"
#KEY="key1" or KEY="key2" or KEY="key3"
for ((i = 0; i < ${#key[@]}; i++))
do
if [ "${key[$i]}" == "$KEY" ];
then
echo "values: ${value[i]}"
fi
done
在這兩種情況下,我得到的結果相同,例如:
value1 value2 value3
是我的代碼的bash 3正確或事情已經進行修訂?
當你從文件「'KEY」鍵值時,它實際上包含了什麼?你能提供它,以便我們可以真正測試它嗎? – Inian
此外,它不能重現你所聲稱的問題,運行'KEY =「key1」','KEY =「key2」','KEY =「key3」''bash v3.0''代碼產生的輸出爲'values:value1 value2 value3','values:value4 value5 value6' and'values:value7 value8 value9' each!這不是你想要做的嗎?那麼你的問題是什麼? – Inian
如果你只是問你是否已經用一對索引數組正確地模擬了一個關聯數組,那麼答案大部分是肯定的。 – chepner