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.

# <strong>di</strong>segna_rettangolo 2 3 19 45 valore <strong>di</strong> ALTEZZA errato (19+2 > 20)<br />

# <strong>di</strong>segna_rettangolo 2 3 18 78 valore <strong>di</strong> BASE errato (78+3 > 80)<br />

#<br />

# COLORE è il colore dei lati del rettangolo.<br />

# È il 5 argomento ed è opzionale.<br />

# 0=nero 1=rosso 2=verde 3=marrone 4=blu 5=porpora 6=cyan 7=bianco.<br />

# Se alla funzione viene passato un numero <strong>di</strong> argomenti errato,<br />

#+ lo script termina con il co<strong>di</strong>ce d’errore 65<br />

#+ e nessun messaggio verrà visualizzato allo stderr.<br />

#<br />

# Pulite lo schermo prima <strong>di</strong> iniziare a <strong>di</strong>segnare un rettangolo.<br />

# Il comando clear non è presente nella funzione.<br />

# Questo per consentire all’utente <strong>di</strong> <strong>di</strong>segnare più rettangoli,<br />

#+ anche sovrapponendoli.<br />

Capitolo 33. Miscellanea<br />

### fine della spiegazione della funzione <strong>di</strong>segna_rettangolo ###<br />

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

<strong>di</strong>segna_rettangolo(){<br />

#=============#<br />

ORIZ="-"<br />

VERT="|"<br />

ANGOLO="+"<br />

ARGMIN=4<br />

E_ERRARG=65<br />

#=============#<br />

if [ $# -lt "$ARGMIN" ]; then # Se gli argomenti sono meno<br />

exit $E_ERRARG #+ <strong>di</strong> 4, esce.<br />

fi<br />

# Controlla che gli argomenti siano solo dei numeri.<br />

# Probabilmente potrebbe essere fatto meglio (esercizio per il lettore?).<br />

if echo $@ | tr -d [:blank:] | tr -d [:<strong>di</strong>git:] | grep . &> /dev/null; then<br />

exit $E_ERRARG<br />

fi<br />

ALTEZZA_RET=‘expr $3 - 1‘ # -1 correzione necessaria perché il carattere per<br />

AMPIEZZA_RET=‘expr $4 - 1‘ #+ gli angoli "+" fa parte sia dell’altezza che della<br />

#+ larghezza.<br />

RIGHE_T=‘tput lines‘ # Si determina la <strong>di</strong>mensione del terminale corrente<br />

COL_T=‘tput cols‘ #+ in numero <strong>di</strong> righe e colonne.<br />

if [ $1 -lt 1 ] || [ $1 -gt $RIGHE_T ]; then # Inizio delle verifiche <strong>di</strong><br />

exit $E_ERRARG #+ congruità degli argomenti.<br />

fi<br />

if [ $2 -lt 1 ] || [ $2 -gt $COL_T ]; then<br />

exit $E_ERRARG<br />

fi<br />

if [ ‘expr $1 + $ALTEZZA_RET + 1‘ -gt $RIGHE_T ]; then<br />

558

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

Saved successfully!

Ooh no, something went wrong!