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.

# Aggiungete in seguito le informazioni per Smith & Zane.<br />

* )<br />

# Opzione predefinita.<br />

# Un input vuoto (tasto INVIO) o <strong>di</strong>verso dalle scelte<br />

#+ proposte, viene verificato qui.<br />

echo<br />

echo "Non ancora inserito nel database."<br />

;;<br />

esac<br />

echo<br />

Capitolo 10. Cicli ed alternative<br />

# Esercizio:<br />

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

# Mo<strong>di</strong>ficate lo script in modo che accetti input multipli,<br />

#+ invece <strong>di</strong> terminare dopo aver visualizzato un solo in<strong>di</strong>rizzo.<br />

exit 0<br />

Un uso particolarmente intelligente <strong>di</strong> case è quello per verificare gli argomenti passati da riga <strong>di</strong><br />

comando.<br />

#!/bin/bash<br />

case "$1" in<br />

"") echo "Utilizzo: ${0##*/} "; exit $E_ERR_PARAM;;<br />

# Nessun parametro da riga <strong>di</strong> comando,<br />

# o primo parametro vuoto.<br />

# Notate che ${0##*/} equivale alla sostituzione <strong>di</strong> parametro<br />

#+ ${var##modello}. Cioè $0.<br />

-*) NOMEFILE=./$1;; # Se il nome del file passato come argomento<br />

#+ ($1) inizia con un trattino, lo sostituisce<br />

#+ con ./$1 <strong>di</strong> modo che i coman<strong>di</strong> successivi<br />

#+ non lo interpretino come un’opzione.<br />

* ) NOMEFILE=$1;; # Altrimenti, $1.<br />

esac<br />

Ecco un esempio ancor più chiaro <strong>di</strong> gestione dei parametri passati da riga <strong>di</strong> comando:<br />

#! /bin/bash<br />

while [ $# -gt 0 ]; do # Finché ci sono parametri . . .<br />

case "$1" in<br />

-d|--debug)<br />

180

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

Saved successfully!

Ooh no, something went wrong!