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.

${var//Modello/Sostituto}<br />

Capitolo 9. Variabili riviste<br />

Sostituzione globale. Tutte le occorrenze <strong>di</strong> Modello presenti in var vengono rimpiazzate da<br />

Sostituto.<br />

Come prima, se si omette Sostituto allora tutte le occorrenze <strong>di</strong> Modello vengono rimpiazzate<br />

con niente, vale a <strong>di</strong>re, cancellate.<br />

Esempio 9-19. Utilizzare la verifica <strong>di</strong> occorrenza per controllare stringhe arbitrarie<br />

#!/bin/bash<br />

var1=abcd-1234-defg<br />

echo "var1 = $var1"<br />

t=${var1#*-*}<br />

echo "var1 (viene tolto tutto ciò che si trova prima del primo"<br />

echo "trattino, compreso) = $t"<br />

# t=${var1#*-} Dà lo stesso risultato,<br />

#+ perché # verifica la stringa più corta,<br />

#+ e * verifica tutto quello che sta prima, compresa una stringa vuota.<br />

# (Grazie a Stephane Chazelas per la puntualizzazione.)<br />

t=${var1##*-*}<br />

echo "Se var1 contiene un \"-\", viene restituita una stringa vuota..."<br />

echo "var1 = $t"<br />

t=${var1%*-*}<br />

echo "var1 (viene tolto tutto ciò che si trova dopo l’ultimo"<br />

echo "trattino, compreso) = $t"<br />

echo<br />

# ------------------------------------------percorso=/home/bozo/idee/pensieri.<strong>di</strong>.oggi<br />

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

"percorso = $percorso"<br />

t=${percorso##/*/}<br />

echo "percorso senza tutti i prefissi = $t"<br />

# Stesso risultato con t=‘basename $percorso‘ , in questo caso particolare.<br />

# t=${percorso%/}; t=${t##*/} è una soluzione più generica,<br />

#+ ma talvolta potrebbe non funzionare.<br />

# Se $percorso termina con un carattere <strong>di</strong> ritorno a capo, allora<br />

#+ ‘basename $percorso‘ fallisce, al contrario dell’espressione precedente.<br />

# (Grazie, S.C.)<br />

t=${percorso%/*.*}<br />

# Stesso risultato <strong>di</strong> t=‘<strong>di</strong>rname $percorso‘<br />

echo "percorso a cui è stato tolto il suffisso (/pensieri.<strong>di</strong>.oggi) = $t"<br />

# Questi operatori possono non funzionare, come nei casi"../",<br />

#+ "/foo////", # "foo/", "/". Togliere i suffissi, specialmente quando<br />

136

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

Saved successfully!

Ooh no, something went wrong!