31.05.2013 Views

Bash scripting - Lordhack.altervista.org - Altervista

Bash scripting - Lordhack.altervista.org - Altervista

Bash scripting - Lordhack.altervista.org - Altervista

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

nomefile.<br />

Il programma in ogni caso non ha modo di acc<strong>org</strong>ersi che il suo stdout o stdin è stato cambiato.<br />

Ora se qualcuno di voi ha provato a mandare il terminale di DOOM3 su un file mi chiederà<br />

"Perchè doom3 si blocca se reindirizzo il suo stdout? Come fa ad acc<strong>org</strong>ersene?"<br />

Semplice, il problema lo fa la shell... non Doom3<br />

Ricapitolando:<br />

Codice:<br />

if<br />

> file # invia lo stdout del prog a file<br />

< file # invia file come stdin del prog<br />

Data la complessità dell'if dello shell script è giusto dedicargli un paragrafo intero.<br />

IF è ls struttura di controllo più amata da tutti i programmatori. In shell script il suo funzionamento di<br />

base è molto semplice<br />

Codice:<br />

#Sintassi dell'if<br />

if condizione ; then<br />

codice<br />

elif codice<br />

fi<br />

Per "codice" si intende una serie di istruzioni shell script.<br />

if esegue le istruzioni contenute tra then e elif/fi se condizione ritorna 0. Condizione è un comanda<br />

shell che viene eseguito in un terminale a parte se il codice di errore di questo è 0 (nessun errore)<br />

allora if esegue le istruzioni. Se il codice di errore è diverso da 0 if salta al prossimo elif o esce se<br />

incontra un fi.<br />

elif è un abbreviazione di else if e permette di eseguire un altro controllo. elif non ha bisogno di essere<br />

chiuso esso viene infatti chiuso dal fi dell'if principale o da un altro elif.<br />

fi termina l' if (come "}" del c o endif del basic.)<br />

Da questo facciamo un esempio per farvi capire meglio.<br />

Codice:

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

Saved successfully!

Ooh no, something went wrong!