Tôi có mảng này:
declare -A astr
Tôi thêm các yếu tố cho nó:
astr[elemA]=123
astr[elemB]=199
Nhưng sau này tôi cần biết ID chỉ mục (elemA và elemB) là gì và liệt kê chúng.
echo "${astr[@]}" #this only get me the values...
Tôi có mảng này:
declare -A astr
Tôi thêm các yếu tố cho nó:
astr[elemA]=123
astr[elemB]=199
Nhưng sau này tôi cần biết ID chỉ mục (elemA và elemB) là gì và liệt kê chúng.
echo "${astr[@]}" #this only get me the values...
Câu trả lời:
Bạn có thể lấy danh sách "khóa" cho mảng kết hợp như vậy:
$ echo "${!astr[@]}"
elemB elemA
Bạn có thể lặp lại các "phím" như vậy:
for i in "${!astr[@]}"
do
echo "key : $i"
echo "value: ${astr[$i]}"
done
$ for i in "${!astr[@]}"; do echo "key : $i"; echo "value: ${astr[$i]}"; done
key : elemB
value: 199
key : elemA
value: 123
${!var[index]}
không hoạt động, chỉ ${!var[@]}
hoặc ${!var[*]}
làm :(
keys=(${!var[@]})
và sau đó ${keys[n]}
, đưa cho tôi chỉ số, nhưng khoảng thời gian đó tôi cũng nhận ra rằng tôi cần phải suy nghĩ lại về cách tiếp cận của mình.
astr2=(a b c d e);echo ${!astr2[@]};unset astr2[2];echo ${!astr2[@]}
thx!