#!/bin/bash
set -x
array_counter=0
array_value=1
array=(0 0 0)
for number in ${array[@]}
do
array[$array_counter]="$array_value"
array_counter=$(($array_counter + 1))
done
Quando si esegue lo script sopra ottengo il seguente output di debug:Variabile come indice dell'array bash?
+ array_counter=0
+ array_value=1
+ array=(0 0 0)
+ for number in '${array[@]}'
+ array[$array_counter]=1
+ array_counter=1
+ for number in '${array[@]}'
+ array[$array_counter]=1
+ array_counter=2
+ for number in '${array[@]}'
+ array[$array_counter]=1
+ array_counter=3
Perché la variabile $ array_counter non espandere quando viene utilizzato come indice in array []?
Cosa non fare che ci si aspetta? Dopo il ciclo, array è "1 1 1" –
Mi aspetto che l'output di debug mostri array [0] = 1, array [1] = 1 e così via. –
ah, sei solo preoccupato per l'output di debug. Sono davvero sorpreso che funzioni del tutto senza un 'eval', ma potrebbe essere che gli array di lhs siano espansi in modo diverso. –