11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capitolo 26. Array<br />

#+ ad un nuovo array.<br />

# Nelle versioni <strong>Bash</strong> 2.04, 2.05a e 2.05b.<br />

#+ entrambi i meto<strong>di</strong> inseriscono gli elementi ’nulli’<br />

# Alle versioni più recenti può aggiungersi un ulteriore assegnamento<br />

#+ purché, per tutti gli array, sia mantenuta la relazione [in<strong>di</strong>ce]=valore.<br />

# Crea un array <strong>di</strong> gran<strong>di</strong> <strong>di</strong>mensioni utilizzando un comando interno,<br />

#+ ma andrà bene qualsiasi cosa che permetta <strong>di</strong> creare un array<br />

#+ <strong>di</strong> <strong>di</strong>verse migliaia <strong>di</strong> elementi.<br />

declare -a grandePrimo=( /dev/* )<br />

echo<br />

echo ’Con<strong>di</strong>zioni: Senza quoting, IFS preimpostato, Tutti gli elementi’<br />

echo "Il numero <strong>di</strong> elementi dell’array è ${#grandePrimo[@]}"<br />

# set -vx<br />

echo<br />

echo ’- - verifica: =( ${array[@]} ) - -’<br />

times<br />

declare -a grandeSecondo=( ${grandePrimo[@]} )<br />

# ^ ^<br />

times<br />

echo<br />

echo ’- - verifica: =${array[@]} - -’<br />

times<br />

declare -a grandeTerzo=${grandePrimo[@]}<br />

# Questa volta niente parentesi.<br />

times<br />

# Il confronto dei risultati <strong>di</strong>mostra che la seconda forma, evidenziata<br />

#+ da Stephane Chazelas, è da tre a quattro volte più veloce.<br />

#<br />

# Spiega William Park:<br />

#+ L’array grandeSecondo viene inizializzato come stringa singola,<br />

#+ mentre grandeTerzo viene inizializzato elemento per elemento.<br />

# Quin<strong>di</strong>, in sostanza, abbiamo:<br />

# grandeSecondo=( [0]="... ... ..." )<br />

# grandeTerzo=( [0]="..." [1]="..." [2]="..." ... )<br />

# Nei miei esempi esplicativi, continuerò ad utilizzare la prima forma<br />

#+ perché penso serva ad illustrare meglio quello che avviene.<br />

# In realtà, porzioni <strong>di</strong> co<strong>di</strong>ce <strong>di</strong> miei esempi possono contenere<br />

#+ la seconda forma quando è necessario velocizzare l’esecuzione.<br />

# MSZ: Scusate le precedenti sviste.<br />

# Nota:<br />

484

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!