Faire défiler les tableaux, imprimer à la fois l’index et la valeur

Je veux faire quelque chose comme ça:

foo=( ) foo[0]="bar" foo[35]="baz" for((i=0;i<${#foo[@]};i++)) do echo "$i: ${foo[$i]}" done # Output: # 0: bar # 1: 

Ensuite, j’ai essayé de le parcourir en utilisant pour:

 foo=( ) foo[0]="bar" foo[35]="baz" for i in ${foo[@]} do echo "?: $i" done # Output: # ?: bar # ?: naz 

mais ici je ne connais pas la valeur de l’indice.

Je sais que tu pourrais quelque chose comme

 foo=( ) foo[0]="bar" foo[35]="baz" declare -p foo # Output: # declare -a foo='([0]="bar" [35]="baz")' 

mais vous ne pouvez pas le faire d’une autre manière?

Vous trouverez les clés du tableau avec "${!foo[@]}" ( référence ), donc:

 for i in "${!foo[@]}"; do printf "%s\t%s\n" "$i" "${foo[$i]}" done 

vous pouvez toujours utiliser l’itération param:

  ITER=0 for I in ${FOO[@]} do echo ${I} ${ITER} ITER=$(expr $ITER + 1) done 
 INDEX=0 for i in $list; do echo ${INDEX}_$i let INDEX=${INDEX}+1 done 
 users=("kamal" "jamal" "rahim" "karim" "sadia") index=() t=-1 for i in ${users[@]}; do t=$(( t + 1 )) if [ $t -eq 0 ]; then for j in ${!users[@]}; do index[$j]=$j done fi echo "${index[$t]} is $i" done