Successivo: Vuoto, Precedente: BEGIN/END, Su: Panoramica sui criteri di ricerca [Contenuti][Indice]
BEGINFILE ed ENDFILEQuesta
sezione descrive una funzionalità disponibile solo in
gawk.
Due tipi speciali di criterio di ricerca, BEGINFILE ed ENDFILE,
forniscono
degli “agganci” per intervenire durante il ciclo di elaborazione dei file
specificati sulla riga di comando di gawk.
Come con le regole BEGIN ed END
(vedi la sezione I criteri di ricerca speciali BEGIN ed END),
tutte le regole BEGINFILE in un programma sono riunite, mantenendole
nell’ordine in cui sono lette da gawk e lo stesso viene fatto
per tutte le regole ENDFILE.
Il corpo delle regole BEGINFILE è eseguito subito prima che
gawk legga il primo record da un file. La variabile FILENAME
è impostata al nome del file corrente e FNR è impostata a zero.
La regola BEGINFILE dà la possibilità di eseguire due compiti
che sarebbe difficile o impossibile effettuare altrimenti:
gawk viene terminato. Comunque, questo si può evitare, per poi
passare a elaborare il file successivo specificato sulla riga dei comandi.
Questo controllo è fattibile controllando se la variabile ERRNO è
diversa dalla stringa nulla; se è questo il caso, gawk non è
riuscito ad aprire il file. In questo caso il programma può eseguire
un’istruzione nextfile
(vedi la sezione L’istruzione nextfile). In questo modo gawk salta
completamente l’elaborazione di quel file.
In caso contrario, gawk termina come al solito con un
errore fatale.
gawk inizi a elaborare il file.
(Questa è una funzionalità molto avanzata, usata al momento solo dal
progetto gawkextlib.)
La regola ENDFILE è chiamata quando gawk ha finito di
elaborare l’ultimo record di un file in input. Per l’ultimo file in input,
è chiamata prima di ogni regola END.
La regola ENDFILE è eseguita anche per file in input vuoti.
Normalmente, se si verifica un errore di lettura durante il normale
ciclo di elaborazione dell’input,
questo è considerato fatale (il programma termina). Tuttavia, se è presente
una regola ENDFILE, l’errore non è considerato fatale, ma viene
impostato ERRNO. Ciò permette di intercettare ed elaborare errori
di I/O a livello di programma awk.
L’istruzione next (vedi la sezione L’istruzione next) non è permessa all’interno
di una regola BEGINFILE o ENDFILE. L’istruzione nextfile
è consentita solo all’interno di una regola BEGINFILE, non all’interno
di una regola ENDFILE.
L’istruzione getline (vedi la sezione Richiedere input usando getline) è limitata all’interno sia di
BEGINFILE che di ENDFILE: solo le forme ridirette di
di getline sono permesse.
BEGINFILE ed ENDFILE sono estensioni gawk.
In molte altre implementazioni di awk o se gawk è in
modalità compatibile (vedi la sezione Opzioni sulla riga di comando), non sono regole speciali.
Successivo: Vuoto, Precedente: BEGIN/END, Su: Panoramica sui criteri di ricerca [Contenuti][Indice]