3 回答

TA貢獻1877條經驗 獲得超1個贊
Bash不支持多維數組,也不支持哈希,并且似乎您想要一個哈希值即數組。這個解決方案不是很漂亮,帶有xml文件的解決方案應該更好:
array=('d1=(v1 v2 v3)' 'd2=(v1 v2 v3)')
for elt in "${array[@]}";do eval $elt;done
echo "d1 ${#d1[@]} ${d1[@]}"
echo "d2 ${#d2[@]} ${d2[@]}"

TA貢獻1869條經驗 獲得超4個贊
Bash沒有多維數組。但是您可以使用關聯數組模擬某種類似的效果。下面是一個偽裝為多維數組的關聯數組的示例:
declare -A arr
arr[0,0]=0
arr[0,1]=1
arr[1,0]=2
arr[1,1]=3
echo "${arr[0,0]} ${arr[0,1]}" # will print 0 1
如果您未將數組聲明為關聯的(帶有-A),則上述方法將無效。例如,如果省略declare -A arr路線,echo將打印2 3的代替0 1,因為0,0,1,0并且這樣將作為算術表達式和評價0(數值以逗號運算符的右側)。

TA貢獻1936條經驗 獲得超7個贊
這對我有用。
# Define each array and then add it to the main one
SUB_0=("name0" "value0")
SUB_1=("name1" "value1")
MAIN_ARRAY=(
SUB_0[@]
SUB_1[@]
)
# Loop and print it. Using offset and length to extract values
COUNT=${#MAIN_ARRAY[@]}
for ((i=0; i<$COUNT; i++))
do
NAME=${!MAIN_ARRAY[i]:0:1}
VALUE=${!MAIN_ARRAY[i]:1:1}
echo "NAME ${NAME}"
echo "VALUE ${VALUE}"
done
- 3 回答
- 0 關注
- 1134 瀏覽
添加回答
舉報