bash - script - In loop su array, stampando sia indice che valore




script bash esempi (2)

Troverai le chiavi dell'array con "${!foo[@]}" ( reference ), quindi:

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

Voglio fare qualcosa del genere:

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

Poi ho provato a passarci attraverso usando for in:

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

ma qui non conosco il valore dell'indice.

So che potresti qualcosa del genere

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

ma, non puoi farlo in un altro modo?


puoi sempre usare il parametro di iterazione:

        ITER=0
        for I in ${FOO[@]}
        do  
            echo ${I} ${ITER}
            ITER=$(expr $ITER + 1)
        done




bash