Successivo: , Precedente: , Su: Eseguire gawk   [Contenuti][Indice]


1.1.4 Programmi awk da eseguire come script

Una volta familiarizzato con awk, si potrebbero scrivere script che richiamano awk, usando il meccanismo di script#!’. Ciò è possibile in molti sistemi operativi.8 Per esempio, si potrebbe modificare il file consiglio e farlo divenire:

#! /bin/awk -f

BEGIN { print \"Non v'allarmate!\" }

Dopo aver reso eseguibile questo file (con il comando chmod), digitare semplicemente ‘consiglio’ al prompt della shell e il sistema si preparerà a eseguire awk come se si fosse digitato ‘awk -f consiglio’:

$ chmod +x consiglio
$ ./consiglio
-| Non v'allarmate!

Script awk autocontenuti sono utili se si vuol scrivere un programma che gli utenti possono richiamare senza dover essere informati che il programma è scritto in awk.

Comprendere ‘#!

awk è un linguaggio interpretato. Ciò significa che il comando awk legge il programma dell’utente e poi elabora i dati secondo le istruzioni contenute nel programma (diversamente da un linguaggio compilato come il C, dove il programma viene prima compilato in codice macchina che è eseguito direttamente dal processore del sistema). Il programma di utilità awk è perciò chiamato interpretatore. Molti linguaggi moderni sono interpretati.

La riga che inizia con ‘#!’ lista l’intero nome-file di un interpretatore da richiamare, con degli argomenti opzionali che saranno passati a quell’interpretatore sulla riga di comando. Il sistema operativo quindi richiama l’interpretatore con gli argomenti dati e con l’intera lista di argomenti con cui era stato invocato il programma. Il primo argomento nella lista è l’intero nome-file del programma awk. Il resto della lista degli argomenti contiene opzioni per awk, oppure file-dati, o entrambi. (Si noti che in molti sistemi awk si trova in /usr/bin invece che in /bin.)

Alcuni sistemi limitano la lunghezza del nome del programma interpretarore a 32 caratteri. Spesso, si può rimediare utilizzando un collegamento simbolico.

Non si dovrebbero mettere altri argomenti oltre al primo nella riga ‘#!’ dopo il percorso del comando awk. Non funziona. Il sistema operativo tratta il resto della riga come un argomento solo, e lo passa ad awk. Così facendo il comportamento sarà poco chiaro; con ogni probabilità verrà emesso un messaggio di errore di qualche tipo da awk.

Infine, il valore di ARGV[0] (vedi la sezione Variabili predefinite) può variare a seconda del sistema operativo. Alcuni sistemi ci mettono ‘awk’, altri il nome completo del percorso di awk (ad. es. /bin/awk), e altri ancora mettono il nome dello script dell’utente (‘consiglio’). (a.b.) Non bisogna fidarsi del valore di ARGV[0] per ottenere il nome del proprio script.


Note a piè di pagina

(8)

Il meccanismo ‘#!’ funziona nei sistemi GNU/Linux, in quelli basati su BSD e nei sistemi Unix a pagamento.


Successivo: , Precedente: , Su: Eseguire gawk   [Contenuti][Indice]