Successivo: File vuoti, Precedente: Funzione rewind, Su: Gestione File Dati [Contenuti][Indice]
Normalmente, se si fornisce ad awk un file-dati che non è leggibile,
il programma
si arresta con un errore fatale. Ci sono casi in cui sarebbe preferibile
ignorare semplicemente questi file e proseguire.74
Si può far questo facendo precedere il proprio programma awk dal
seguente programma:
# readable.awk --- file di libreria per saltare file non leggibili
BEGIN {
for (i = 1; i < ARGC; i++) {
if (ARGV[i] ~ /^[a-zA-Z_][a-zA-Z0-9_]*=.*/ \
|| ARGV[i] == "-" || ARGV[i] == "/dev/stdin")
continue # assegnamento di variabile o standard input
else if ((getline aperdere < ARGV[i]) < 0) # file non leggibile
delete ARGV[i]
else
close(ARGV[i])
}
}
Questo codice funziona, perché l’errore di getline non è fatale.
Rimuovendo l’elemento da ARGV con delete
si tralascia il file (perché non è più nella lista).
Si veda anche Usare ARGC e ARGV.
Poiché per i nomi delle variabili awk si possono usare solo lettere
dell’alfabeto inglese, di proposito il controllo con espressioni regolari
non usa classi di
carattere come ‘[:alpha:]’ e ‘[:alnum:]’
(vedi la sezione Usare espressioni tra parentesi quadre).
Il criterio di
ricerca speciale BEGINFILE (vedi la sezione I criteri di ricerca speciali BEGINFILE ed ENDFILE) fornisce un
meccanismo alternativo per trattare i file che non sono leggibili.
Tuttavia, il codice qui proposto fornisce una soluzione portabile.