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


7.4.10 L’istruzione exit

L’istruzione exit fa sì che awk termini immediatamente l’esecuzione della regola corrente e che termini di elaborare l’input; qualsiasi input ancora da elaborare è ignorato. L’istruzione exit è scritta come segue:

exit [codice di ritorno]

Quando un’istruzione exit è eseguita all’interno di una regola BEGIN, il programma termina completamente l’elaborazione. Nessun record in input viene letto. Tuttavia, se una regola END è presente, come parte dell’esecuzione dell’istruzione exit, la regola END viene eseguita (vedi la sezione I criteri di ricerca speciali BEGIN ed END). Se exit è usata nel corpo di una regola END, il programma termina immediatamente.

Un’istruzione exit che non fa parte di una regola BEGIN o END termina l’esecuzione di qualsiasi ulteriore regola applicabile al record corrente, salta la lettura di qualsiasi record in input, ed esegue le eventuali regole END. gawk salta anche le eventuali regole ENDFILE, che non vengono eseguite.

In questo caso, se non si desidera che la regola END venga eseguita, si deve impostare una variabile a un valore diverso da zero, prima di invocare l’istruzione exit e controllarne il valore nella regola END. Vedi la sezione Asserzioni per un esempio di questo tipo.

Se si specifica un argomento all’istruzione exit, il suo valore è usato come codice di ritorno finale dell’elaborazione awk. Se non viene specificato alcun argomento, exit fa terminare awk con un codice di ritorno di “successo”. Nel caso in cui un argomento sia specificato in una prima istruzione exit e poi exit sia chiamato una seconda volta all’interno di una regola END senza alcun argomento, awk usa il codice di ritorno specificato in precedenza. (a.b.) Vedi la sezione Il codice di ritorno all’uscita da gawk per maggiori informazioni.

Per esempio, si supponga che si sia verificata una condizione di errore difficile o impossibile da gestire. Convenzionalmente, i programmi la segnalano terminando con un codice di ritorno diverso da zero. Un programma awk può farlo usando un’istruzione exit con un argomento diverso da zero, come mostrato nell’esempio seguente:

BEGIN {
    if (("date" | getline data_corrente) <= 0) {
      print "Non riesco a ottenere la data dal sistema" > "/dev/stderr"
      exit 1
    }
    print "la data corrente è", data_corrente
    close("date")
}

NOTA: Per una completa portabilità, i codici di ritorno dovrebbero essere compresi tra zero e 126, estremi compresi. Valori negativi e valori maggiori o uguali a 127, possono non generare risultati coerenti tra loro in sistemi operativi diversi.


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