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 12. Filtri, programmi e coman<strong>di</strong> esterni<br />

Lo script precedente illustra come expr usa le parentesi con l’escaping -- \( ... \) -- per raggruppare<br />

operatori, in coppia con la verifica <strong>di</strong> espressione regolare, per trovare una sottostringa. Ecco un altro<br />

esempio, questa volta preso dal “mondo reale.”<br />

# Toglie le spaziature iniziali e finali.<br />

LRFDATE=‘expr "$LRFDATE" : ’[[:space:]]*\(.*\)[[:space:]]*$’‘<br />

# Dallo script <strong>di</strong> Peter Knowles "booklistgen.sh"<br />

#+ per la conversione <strong>di</strong> file nel formato Sony Librie.<br />

# (http://booklistgensh.peterknowles.com)<br />

Perl, sed e awk possiedono strumenti <strong>di</strong> gran lunga superiori per la verifica delle stringhe. Una breve<br />

“subroutine” sed o awk in uno script (ve<strong>di</strong> la Sezione 33.2) è un’alternativa attraente ad expr.<br />

Ve<strong>di</strong> la Sezione 9.2 per approfon<strong>di</strong>menti sull’uso <strong>di</strong> expr nelle operazioni sulle stringhe.<br />

12.3. Coman<strong>di</strong> per ora/data<br />

date<br />

Ora/data e calcolo del tempo<br />

La semplice invocazione <strong>di</strong> date visualizza la data e l’ora allo stdout. L’interesse per questo<br />

comando deriva dall’uso delle sue opzioni <strong>di</strong> formato e verifica.<br />

Esempio 12-10. Utilizzo <strong>di</strong> date<br />

#!/bin/bash<br />

# Esercitarsi con il comando ’date’<br />

echo "Il numero <strong>di</strong> giorni trascorsi dall’inizio dell’anno è ‘date +%j‘."<br />

# È necessario il ’+’ per il formato dell’output.<br />

# %j fornisce i giorni dall’inizio dell’anno.<br />

echo "Il numero <strong>di</strong> secon<strong>di</strong> trascorsi dal 01/01/1970 è ‘date +%s‘."<br />

# %s contiene il numero <strong>di</strong> secon<strong>di</strong> dall’inizio della "UNIX epoch", ma<br />

#+ quanto può essere utile?<br />

prefisso=temp<br />

suffisso=$(date +%s) # L’opzione "+%s" <strong>di</strong> ’date’ è una specifica GNU.<br />

nomefile=$prefisso.$suffisso<br />

242

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

Saved successfully!

Ooh no, something went wrong!