[GAWK] Exit status, --lint

View: New views
2 Messages — Rating Filter:   Alert me  

[GAWK] Exit status, --lint

by Denis M. Wilson :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

The exit status of gawk is undocumented, when
gawk exits other than via an exit statement.
E.g. when an error occurs using --lint=fatal.
In that case the exit status is 2 and not
EXIT_FAILURE (1 under glibc). Example:

#!/bin/sh
awk --lint=fatal -f - <<'ENDAWK'
BEGIN {
     print zzz
}
ENDAWK
echo $?

output:
awk: -:2: fatal: reference to uninitialized variable `zzz'
2

I am using Ubuntu 8.4

Denis M. Wilson



Parent Message unknown Re: [GAWK] Exit status, --lint

by Aharon Robbins :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Greetings. Re this:

> Date: Thu, 24 Sep 2009 14:56:26 +0100
> From: "Denis M. Wilson" <dmw@...>
> To: bug-gawk@...
> Subject: [GAWK] Exit status, --lint
>
> The exit status of gawk is undocumented, when
> gawk exits other than via an exit statement.
> E.g. when an error occurs using --lint=fatal.
> In that case the exit status is 2 and not
> EXIT_FAILURE (1 under glibc). Example:
>
> #!/bin/sh
> awk --lint=fatal -f - <<'ENDAWK'
> BEGIN {
>      print zzz
> }
> ENDAWK
> echo $?
>
> output:
> awk: -:2: fatal: reference to uninitialized variable `zzz'
> 2
>
> I am using Ubuntu 8.4
>
> Denis M. Wilson

Thanks for the note.  I fixed this in 3.1.7, which was released not
too long ago.  If you look in doc/gawk.texi, you will find:

        @node Exit Status
        @section @command{gawk}'s Exit Status

        @cindex exit status, of @command{gawk}
        If the @code{exit} statement is used with a value
        (@pxref{Exit Statement}), then @command{gawk} exits with
        the numeric value given to it.

        Otherwise, if there were no problems during execution,
        @command{gawk} exits with the value of the C constant
        @code{EXIT_SUCCESS}.  This is usually zero.

        If an error occurs, @command{gawk} exits with the value of
        the C constant @code{EXIT_FAILURE}.  This is usually one.

        If @command{gawk} exits because of a fatal error, the exit
        status is 2.  On non-POSIX systems, this value may be mapped
        to @code{EXIT_FAILURE}.

I don't currently have this in the man page.

Thanks for the bug report!

Arnold