У мене є цей масив:
declare -A astr
Я додаю до нього елементи:
astr[elemA]=123
astr[elemB]=199
Але згодом мені потрібно знати, що таке індекси ID (elemA та elemB), і перерахувати їх.
echo "${astr[@]}" #this only get me the values...
У мене є цей масив:
declare -A astr
Я додаю до нього елементи:
astr[elemA]=123
astr[elemB]=199
Але згодом мені потрібно знати, що таке індекси ID (elemA та elemB), і перерахувати їх.
echo "${astr[@]}" #this only get me the values...
Відповіді:
Ви можете отримати список "ключів" для асоціативного масиву таким чином:
$ echo "${!astr[@]}"
elemB elemA
Ви можете повторити "клавіші" так:
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]}
це не працює, лише ${!var[@]}
або ${!var[*]}
виконайте :(
keys=(${!var[@]})
і тоді ${keys[n]}
, давши мені індекс, але приблизно в той же час я також зрозумів, що мені потрібно переосмислити свій підхід.
astr2=(a b c d e);echo ${!astr2[@]};unset astr2[2];echo ${!astr2[@]}
thx!