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 />

Con il termine “quoting” si intende semplicemente l’inseririmento <strong>di</strong> una stringa tra apici. Viene<br />

impiegato per proteggere i caratteri speciali contenuti nella stringa dalla reinterpretazione, o espansione,<br />

da parte della shell o <strong>di</strong> uno script. (Un carattere si definisce “speciale” se viene interpretato<br />

<strong>di</strong>versamente dal suo significato letterale, come il carattere jolly *.)<br />

bash$ ls -l [Vv]*<br />

-rw-rw-r-- 1 bozo bozo 324 Apr 2 15:05 VIEWDATA.BAT<br />

-rw-rw-r-- 1 bozo bozo 507 May 4 14:25 vartrace.sh<br />

-rw-rw-r-- 1 bozo bozo 539 Apr 14 17:11 viewdata.sh<br />

bash$ ls -l ’[Vv]*’<br />

ls: [Vv]*: No such file or <strong>di</strong>rectory<br />

Nella scrittura, si mette una frase fra “virgolette” quando la si vuole evidenziare e attribuirle<br />

un significato speciale. In uno script <strong>Bash</strong>, quando si applica il quoting (virgolette) a una<br />

stringa è per evidenziarla e conservare il suo significato letterale.<br />

Tuttavia, alcuni programmi ed utility possono ancora reinterpretare o espandere i caratteri speciali<br />

contenuti in una stringa a cui è stato applicato il quoting. Un utilizzo importante del quoting è quello <strong>di</strong><br />

proteggere un parametro passato da riga <strong>di</strong> comando dalla reinterpretazione da parte della shell, ma<br />

permettere ancora al programma chiamante <strong>di</strong> espanderlo.<br />

bash$ grep ’[Pp]rima’ *.txt<br />

file1.txt:Questa è la prima riga <strong>di</strong> file1.txt.<br />

file2.txt:Questa è la prima riga <strong>di</strong> file2.txt.<br />

È da notare che l’istruzione grep [Pp]rima *.txt, senza quoting, funziona con la shell <strong>Bash</strong>. 1<br />

Il quoting è anche in grado <strong>di</strong> eliminare la “fame” <strong>di</strong> a_capo tipica <strong>di</strong>echo.<br />

bash$ echo $(ls -l)<br />

total 8 -rw-rw-r-- 1 bozo bozo 130 Aug 21 12:57 t222.sh -rw-rw-r-- 1 bozo bozo 78 Aug 21 12:57 t71.sh<br />

bash$ echo "$(ls -l)"<br />

49

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

Saved successfully!

Ooh no, something went wrong!