Successivo: , Precedente: , Su: Gestione File Dati   [Contenuti][Indice]


10.3.3 Controllare che i file-dati siano leggibili

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).


Note a piè di pagina

(74)

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.