28.05.2013 Views

LOA HackLab - Autistici

LOA HackLab - Autistici

LOA HackLab - Autistici

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

In fila per uno: gli array 107<br />

$ grep root /etc/passwd | awk -F : ’{ print $7}’<br />

/bin/bash<br />

$<br />

Et voilá. La shell di root è /bin/bash. La sintassi $n indica l’n -esimo campo delimitato<br />

dal separatore specificato con -f. Notate che abbiamo dovuto includere il corpo del<br />

programma tra apostrofi per evitare che la shell sottostante tentasse una espansione di<br />

$7 pensando che fosse una sua variabile d’ambiente.<br />

La numerazione dei campi parte da 1 e prosegue.<br />

Descrizione del linguaggio 7.3.2<br />

Un programma awk è un elenco di statement pattern {action} . Un pattern può essere:<br />

• BEGIN<br />

• END<br />

• expression<br />

• expression , expression<br />

Il pattern O l’action possono essere omessi. Se il pattern viene omesso è come se fosse<br />

risultato positivo al match. Se ad essere omessa è l’action si dà per assunta {print}.<br />

Elenchiamo rapidamente i costrutti:<br />

if ( expr ) statement<br />

if ( expr ) statement else statement<br />

while ( expr ) statement<br />

do statement while ( expr )<br />

for ( opt_expr ; opt_expr ; opt_expr ) statement<br />

for ( var in array ) statement<br />

continue<br />

break<br />

Il significato è in tutto e per tutto analogo a quello già affrontato con le shell. Per<br />

questo non spiegeremo da capo ciascuno di essi. È solo opportuno prestare attenzioni alle<br />

differenze che possiamo rilevare. Ad esempio con awk il costrutto if non viene terminato<br />

da fi. Anzi non viene terminato proprio.<br />

Come è prevedibile aspettarsi, awk supporta le regular expression. È sufficiente<br />

specificare la regexpr con la sintassi abituale: /regexpr/ . Tramite il costrutto expr ~<br />

/regexpr/ è possibile applicare una regular expression sul expr. Il costrutto risulta 1 se<br />

la regexpr ha un match positivo.<br />

In fila per uno: gli array 7.3.3<br />

awk offre supporto per array monodimensionali. La scrittura array["indice"] indica<br />

l’elemento contenuto nell’array array alla posizione "indice". Notate come

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

Saved successfully!

Ooh no, something went wrong!