Successivo: Vuoto, Precedente: BEGIN/END, Su: Panoramica sui criteri di ricerca [Contenuti][Indice]
BEGINFILE
ed ENDFILE
Questa
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]