Bash script: array dinamico

Premetto che sono molto ingurante di bash script e molto probabilmente sto chiedendo una cavolata! Oggi stavo aiutando un mio amico ingegnere per un esame di s.o e in un esercizio di bash script mi sarebbe venuto comodo avere a disposizione un array di dimensione non fissata a priori ma anzi espandibile a piacere con nuovi elementi. La mia mente malata e mal forgiata da troppi esami di fondamenti di informatica è arrivata alla seguente soluzione “poco pulita”:

ipotizzando di avere un array

ARRAY=(uno due tre)

e volendo aggiungere nuovi elementi di cui non si sa la quantità a priori (ergo mettiamo ci sia un eventuale loop che ad ogni ciclo inserisce un nuovo elemento contenuto nella variabile $nuovoelemento senza sapere quando finirà)

ho fatto così:

ARRAY=( echo ${ARRAY*]} $nuovoelemento )

Al che mi chiedo: c’è (sicuramente) un metodo migliore?

Vedi se quest’altra #OOPS#ta ti può interessare:

Ovviamente tutti i file devono essere contenuti in $VARR.

Mmm…ferme restando le premesse del post precedente (:-)) ma così non copia semplicemente l’array?

[quote=Astharoth]
Mmm…ferme restando le premesse del post precedente (:-)) ma così non copia semplicemente l’array?[/quote]

Hai ragione ho riletto ora più attentamente il primo post… perdonami ma alle 8.30 stavo un po’ intontito…

Ehehehe, figurati. Anzi, grazie per esserti messo comunque a rispondere!

[quote=Astharoth]
Al che mi chiedo: c’è (sicuramente) un metodo migliore?[/quote]
mi sembra il migliore.

@Astharoth
ottimo metodo direi… e’ cera gray.

faccio notare un possibile effetto collaterale…
potrebbe essere di interesse, non so…

$ unset tabella
$ tabella[7]=23_posizione07
$ tabella[9]=37_posizione_9
$ tabella[51]=area_posizione51

$ echo “numero elementi in tabella: ${#tabella@]}”
$ tabella=( echo ${tabella*]} nuovoelemento )
$ echo “numero elementi in tabella: ${#tabella@]}”

tabella[7] ora e’ tabella[1]

Se l’ array non e’ “popolato” in ordine sequenziale
sebbene non si perda nulla, alcuni elementi cambieranno posizione.

ciao :slight_smile:

Si, per array sparsi in effetti non è consigliabile eheh. Grazie per lo spunto!