Precedente: , Su: Variabili   [Contenuti][Indice]


6.1.3.2 Assegnare una variabile dalla riga di comando

Si può impostare qualsiasi variabile awk includendo un assegnamento di variabile tra gli argomenti sulla riga di comando quando viene invocato awk (vedi la sezione Altri argomenti della riga di comando). Tale assegnamento ha la seguente forma:

variabile=testo

Con questo assegnamento, una variabile viene impostata o all’inizio dell’esecuzione di awk o tra la lettura di un file in input e il successivo file in input. Quando l’assegnamento è preceduto dall’opzione -v, come nel seguente esempio:

-v variabile=testo

la variabile è impostata proprio all’inizio, ancor prima che sia eseguita la regola BEGIN. L’opzione -v e il suo assegnamento deve precedere tutti gli argomenti nome-file, e anche il testo del programma. (Vedi la sezione Opzioni sulla riga di comando per maggiori informazioni sull’opzione -v.) In alternativa, l’assegnamento di variabile è effettuata in un momento determinato dalla posizione dell’opzione tra gli argomenti "file in input", cioè dopo l’elaborazione del precedente argomento "file in input". Per esempio:

awk '{ print $n }' n=4 inventory-shipped n=2 mail-list

stampa il valore del campo numero n per tutti i record in input. Prima che venga letto il primo file, la riga di comando imposta la variabile n al valore quattro. Questo fa sì che venga stampato il quarto campo delle righe del file inventory-shipped. Dopo la fine del primo file, ma prima che inizi il secondo file, n viene impostato a due, e quindi poi viene stampato il secondo campo delle righe di mail-list:

$ awk '{ print $n }' n=4 inventory-shipped n=2 mail-list
-| 15
-| 24
…
-| 555-5553
-| 555-3412
…

Gli argomenti da riga di comando sono resi disponibili dal programma awk nel vettore ARGV per poter essere esaminati esplicitamente (vedi la sezione Usare ARGC e ARGV). awk elabora i valori degli assegnamenti da riga di comando per sequenze di protezione (vedi la sezione Sequenze di protezione). (a.b.)

Le variabili assegnate sulla riga di comando (sia tramite l’opzione -v che senza) sono trattate come stringhe. Quando tali variabili sono usate come numeri, viene effettuata la normale conversione automatica da stringhe a numeri, e ogni cosa “funziona come deve”.

Peraltro, gawk supporta variabili di tipo “regexp”. Si possono assegnare valori a variabili di questo tipo usando la sintassi seguente:

gawk -v 're1=@/pippo|pluto/' '…' /percorso/al/file1 're2=@/ciao|salve/' /percorso/al/file2

Le costanti regexp fortemente tipizzate sono un’altra funzionalità avanzata disponibile (vedi la sezione Costanti regexp fortemente tipizzate). Sono ricordate qui solo per completezza.


Precedente: , Su: Variabili   [Contenuti][Indice]