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


10.3.5 Trattare assegnamenti di variabile come nomi-file

Occasionalmente, potrebbe essere più opportuno che awk non elabori gli assegnamenti di variabile presenti sulla riga di comando (vedi la sezione Assegnare una variabile dalla riga di comando). In particolare, se si ha un nome-file che contiene un carattere ‘=’, awk tratta il nome-file come un assegnamento e non lo elabora.

Alcuni utenti hanno suggerito un’opzione aggiuntiva da riga di comando per gawk per disabilitare gli assegnamenti dati sulla riga di comando. Comunque, poche righe di codice di programmazione in un file di libreria hanno lo stesso effetto:

# noassign.awk --- file di libreria per evitare la necessità
# di una speciale opzione per disabilitare gli assegnamenti da
# riga di comando

function disable_assigns(argc, argv,    i)
{
    for (i = 1; i < argc; i++)
        if (argv[i] ~ /^[a-zA-Z_][a-zA-Z0-9_]*=.*/)
            argv[i] = ("./" argv[i])
}

BEGIN {
    if (Disabilita_variabili)
        disable_assigns(ARGC, ARGV)
}

Il programma va poi eseguito in questo modo:

awk -v Disabilita_variabili=1 -f noassign.awk -f vostro_programma.awk *

La funzione esegue un ciclo che esamina ogni argomento. Antepone ‘./’ a qualsiasi argomento che abbia la forma di un assegnamento di variabile, trasformando così quell’argomento in un nome-file.

L’uso di Disabilita_variabili consente di disabilitare assegnamenti di variabile dati sulla riga di comando al momento dell’invocazione, assegnando alla variabile un valore vero. Se non viene impostata la variabile è inizializzata a zero (cioè falso), e gli argomenti sulla riga di comando non vengono modificati.