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.

Capitolo 5. Quoting<br />

variabile=\\\\<br />

echo "$variabile" # \\<br />

# Il secondo ed il quarto sono stati preservati dal<br />

#+ primo e dal terzo.<br />

# Questo va bene.<br />

L’escaping dello spazio evita la sud<strong>di</strong>visione delle parole <strong>di</strong> un argomento contenente un elenco <strong>di</strong><br />

coman<strong>di</strong>.<br />

elenco_file="/bin/cat /bin/gzip /bin/more /usr/bin/less /usr/bin/emacs-20.7"<br />

# Elenco <strong>di</strong> file come argomento(i) <strong>di</strong> un comando.<br />

# Aggiunge due file all’elenco, quin<strong>di</strong> visualizza tutto.<br />

ls -l /usr/X11R6/bin/xsetroot /sbin/dump $elenco_file<br />

echo "-------------------------------------------------------------------------"<br />

# Cosa succede se si effettua l’escaping dei due spazi?<br />

ls -l /usr/X11R6/bin/xsetroot\ /sbin/dump\ $elenco_file<br />

# Errore: i primi tre file vengono concatenati e considerati come un unico<br />

#+ argomento per ’ls -l’ perché l’escaping dei due spazi impe<strong>di</strong>sce la<br />

#+ <strong>di</strong>visione degli argomenti (parole).<br />

Il carattere <strong>di</strong> escape rappresenta anche un mezzo per scrivere coman<strong>di</strong> su più righe. Di solito, ogni riga<br />

rappresenta un comando <strong>di</strong>fferente, ma il carattere <strong>di</strong> escape posto in fine <strong>di</strong> riga effettua l’escaping del<br />

carattere a capo, in questo modo la sequenza dei coman<strong>di</strong> continua alla riga successiva.<br />

((cd /source/<strong>di</strong>rectory && tar cf - . ) | \<br />

(cd /dest/<strong>di</strong>rectory && tar xpvf -)<br />

# Ripetizione del comando copia <strong>di</strong> un albero <strong>di</strong> <strong>di</strong>rectory <strong>di</strong> Alan Cox,<br />

# ma sud<strong>di</strong>viso su due righe per aumentarne la leggibilità.<br />

# Come alternativa:<br />

tar cf - -C /source/<strong>di</strong>rectory . |<br />

tar xpvf - -C /dest/<strong>di</strong>rectory<br />

# Ve<strong>di</strong> la nota più sotto.<br />

#(Grazie, Stéphane Chazelas.)<br />

Nota: Se una riga dello script termina con | (pipe) allora la \ (l’ escape), non è obbligatorio. È,<br />

tuttavia, buona pratica <strong>di</strong> programmazione utilizzare sempre l’escape alla fine <strong>di</strong> una riga <strong>di</strong> co<strong>di</strong>ce<br />

che continua nella riga successiva.<br />

56

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

Saved successfully!

Ooh no, something went wrong!