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.

Esempio 10-4. Agire sui file con un ciclo for<br />

Capitolo 10. Cicli ed alternative<br />

#!/bin/bash<br />

# list-glob.sh: Generare [lista] in un ciclo for usando il "globbing".<br />

echo<br />

for file in *<br />

# ^ <strong>Bash</strong> esegue l’espansione del nome del file<br />

#+ nelle espressioni che riconoscono il globbing.<br />

do<br />

ls -l "$file" # Elenca tutti i file in $PWD (<strong>di</strong>rectory corrente).<br />

# Ricordate che il carattere jolly "*" verifica tutti i file,<br />

#+ tuttavia, il "globbing" non verifica i file i cui nomi iniziano<br />

#+ con un punto.<br />

# Se il modello non verifica nessun file, allora si autoespande.<br />

# Per evitarlo impostate l’opzione nullglob<br />

#+ (shopt -s nullglob).<br />

# Grazie, S.C.<br />

done<br />

echo; echo<br />

for file in [jx]*<br />

do<br />

rm -f $file # Cancella solo i file i cui nomi iniziano con<br />

#+ "j" o "x" presenti in $PWD.<br />

echo "Rimosso il file \"$file\"".<br />

done<br />

echo<br />

exit 0<br />

Omettere in [lista] in un ciclo for fa sì che il ciclo agisca su $@ -- l’elenco degli argomenti<br />

forniti allo script da riga <strong>di</strong> comando. Una <strong>di</strong>mostrazione particolarmente intelligente <strong>di</strong> ciò è<br />

illustrata in Esempio A-16.<br />

Esempio 10-5. Tralasciare in [lista] in un ciclo for<br />

#!/bin/bash<br />

# Invocate lo script sia con che senza argomenti e osservate cosa succede.<br />

for a<br />

do<br />

echo -n "$a "<br />

done<br />

# Manca ’in lista’, quin<strong>di</strong> il ciclo opera su ’$@’<br />

#+ (elenco degli argomenti da riga <strong>di</strong> comando, compresi gli spazi).<br />

162

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

Saved successfully!

Ooh no, something went wrong!