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.

tr -cs ’[:alpha:]’ Z | tr -s ’\173-\377’ Z | tr Z ’ ’‘<br />

Esempio 33-18. Divertirsi con gli anagrammi<br />

#!/bin/bash<br />

# agram.sh: Giocare con gli anagrammi.<br />

# Trova gli anagrammi <strong>di</strong>...<br />

LETTERE=etaoinshrdlu<br />

FILTRO=’.......’ # Numero minimo <strong>di</strong> lettere.<br />

# 1234567<br />

Capitolo 33. Miscellanea<br />

anagram "$LETTERE" | # Trova tutti gli anagrammi delle lettere fornite...<br />

grep "$FILTRO" | # Di almeno 7 lettere,<br />

grep ’^is’ | # che iniziano con ’is’<br />

grep -v ’s$’ | # nessun plurale (in inglese, ovviamente [N.d.T.])<br />

grep -v ’ed$’ # nessun participio passato <strong>di</strong> verbi (come sopra)<br />

# E’ possibile aggiungere molte altre combinazioni <strong>di</strong> con<strong>di</strong>zioni e filtri.<br />

# Usa l’utility "anagram" che fa parte del pacchetto<br />

#+ <strong>di</strong>zionario "yawl" dell’autore <strong>di</strong> questo documento.<br />

# http://ibiblio.org/pub/Linux/libs/yawl-0.3.tar.gz<br />

# http://personal.riverusers.com/~thegrendel/yawl-0.3.2.tar.gz<br />

exit 0 # Fine del co<strong>di</strong>ce.<br />

bash$ sh agram.sh<br />

islander<br />

isolate<br />

isolead<br />

isotheral<br />

# Esercizi:<br />

# --------<br />

# Mo<strong>di</strong>ficate lo script in modo che il valore <strong>di</strong> LETTERE venga fornito come<br />

#+ parametro da riga <strong>di</strong> comando.<br />

# Anche i filtri alle righe 11 - 13 devono essere sostituiti da parametri<br />

#+ (come con $FILTRO), così che possano essere passati come argomenti<br />

#+ a una funzione.<br />

# Per un approccio agli anagrammi leggermente <strong>di</strong>verso,<br />

#+ ve<strong>di</strong> lo script agram2.sh.<br />

Ve<strong>di</strong> anche Esempio 27-3, Esempio 12-22 e Esempio A-9.<br />

• Si usino gli “here document anonimi” per commentare blocchi <strong>di</strong> co<strong>di</strong>ce ed evitare <strong>di</strong> dover<br />

commentare ogni singola riga con un #. Ve<strong>di</strong> Esempio 17-11.<br />

581

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

Saved successfully!

Ooh no, something went wrong!