$LINENO within functions

Kostik Belousov kostikbel at gmail.com
Fri May 30 18:47:15 UTC 2008


On Fri, May 30, 2008 at 07:27:12PM +0200, Stefan Farfeleder wrote:
> Hi,
> 
> SUSv3 says the following about $LINENO:
> 
> "Set by the shell to a decimal number representing the current
> sequential line number (numbered starting with 1) within a script or
> function before it executes each command. If the user unsets or resets
> LINENO , the variable may lose its special meaning for the life of the
> shell. If the shell is not currently executing a script or function, the
> value of LINENO is unspecified. This volume of IEEE Std 1003.1-2001
> specifies the effects of the variable only for systems supporting the
> User Portability Utilities option."
> 
> My initial interpretation of "or function" was that it means $LINENO
> within a function should be relative to the function's beginning line.
> Now I'm not so sure anymore.  Bash release 2.05b changed the expansion
> of $LINENO within functions to absolute numbering, stating this is
> required by POSIX.  But then I wonder about the meaning of "or
> function".  Does it mean functions in interactive scripts?  Because for
> functions in shell scripts the mentioning of both "script" and
> "function" seems redundant.

I do not know whether you need this data, but ksh93 and pdksh exhibit
the same behaviour as bash. For the rev. 1.1 of lineno.0, I got

2
3
6
7
12
13
foo
foo
2

On the other hand, zsh produces

2
3
1
2
12
13
foo
foo
2
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-standards/attachments/20080530/8d8fb43d/attachment.pgp


More information about the freebsd-standards mailing list