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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

filtra () # Elimina gli in<strong>di</strong>ci negativi dell’array.<br />

{<br />

echo -n " " # Provvede all’inclinazione.<br />

# Spiegate come.<br />

Capitolo 26. Array<br />

if [[ "$1" -ge 0 && "$1" -lt "$Righe" && "$2" -ge 0 && "$2" -lt "$Colonne" ]]<br />

then<br />

let "in<strong>di</strong>ce = $1 * $Righe + $2"<br />

# Ora lo visualizza ruotato.<br />

echo -n " ${alfa[in<strong>di</strong>ce]}"<br />

# alfa[$riga][$colonna]<br />

fi<br />

}<br />

ruota () # Ruota l’array <strong>di</strong> 45 gra<strong>di</strong> --<br />

{ #+ facendo "perno" sul suo angolo inferiore sinistro.<br />

local riga<br />

local colonna<br />

for (( riga = Righe; riga > -Righe; riga-- ))<br />

do # Passa l’array in senso inverso. Perché?<br />

for (( colonna = 0; colonna < Colonne; colonna++ ))<br />

do<br />

if [ "$riga" -ge 0 ]<br />

then<br />

let "t1 = $colonna - $riga"<br />

let "t2 = $colonna"<br />

else<br />

let "t1 = $colonna"<br />

let "t2 = $colonna + $riga"<br />

fi<br />

filtra $t1 $t2 # Elimina gli in<strong>di</strong>ci negativi dell’array.<br />

# Cosa succede se non viene fatto?<br />

done<br />

echo; echo<br />

done<br />

# La rotazione è ispirata agli esempi (pp. 143-146) presenti in<br />

#+ "Advanced C Programming on the IBM PC," <strong>di</strong> Herbert Mayer<br />

#+ (ve<strong>di</strong> bibliografia).<br />

# Questo solo per <strong>di</strong>mostrare che molto <strong>di</strong> quello che si può fare con il C<br />

#+ può essere fatto con lo <strong>scripting</strong> <strong>di</strong> shell.<br />

501

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

Saved successfully!

Ooh no, something went wrong!