manpagez: man pages & more
info gawk
Home | html | info | man

File: gawk.info,  Node: Exit Statement,  Prev: Nextfile Statement,  Up: Statements

7.4.10 The 'exit' Statement
---------------------------

The 'exit' statement causes 'awk' to immediately stop executing the
current rule and to stop processing input; any remaining input is
ignored.  The 'exit' statement is written as follows:

     'exit' [RETURN CODE]

   When an 'exit' statement is executed from a 'BEGIN' rule, the program
stops processing everything immediately.  No input records are read.
However, if an 'END' rule is present, as part of executing the 'exit'
statement, the 'END' rule is executed (*note BEGIN/END::).  If 'exit' is
used in the body of an 'END' rule, it causes the program to stop
immediately.

   An 'exit' statement that is not part of a 'BEGIN' or 'END' rule stops
the execution of any further automatic rules for the current record,
skips reading any remaining input records, and executes the 'END' rule
if there is one.  'gawk' also skips any 'ENDFILE' rules; they do not
execute.

   In such a case, if you don't want the 'END' rule to do its job, set a
variable to a nonzero value before the 'exit' statement and check that
variable in the 'END' rule.  *Note Assert Function:: for an example that
does this.

   If an argument is supplied to 'exit', its value is used as the exit
status code for the 'awk' process.  If no argument is supplied, 'exit'
causes 'awk' to return a "success" status.  In the case where an
argument is supplied to a first 'exit' statement, and then 'exit' is
called a second time from an 'END' rule with no argument, 'awk' uses the
previously supplied exit value.  (d.c.)  *Note Exit Status:: for more
information.

   For example, suppose an error condition occurs that is difficult or
impossible to handle.  Conventionally, programs report this by exiting
with a nonzero status.  An 'awk' program can do this using an 'exit'
statement with a nonzero argument, as shown in the following example:

     BEGIN {
         if (("date" | getline date_now) <= 0) {
             print "Can't get system date" > "/dev/stderr"
             exit 1
         }
         print "current date is", date_now
         close("date")
     }

     NOTE: For full portability, exit values should be between zero and
     126, inclusive.  Negative values, and values of 127 or greater, may
     not produce consistent results across different operating systems.

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.