Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

BUG: $_ empty on null function call



Hello all,
  I am still a beginner in developing, or I would tackle this issue directly myself.  The misbehavior is when the command list has a null function with parameters, the last-command-last-parameter ($_) built-in variable goes blank.  Example:

local a=1 b=2 c=3; : One; function { : Two; echo $_; print -l $argv; } $_ Three; print -l $_ Four;
## Should print:
#  Two
#  One
#  Three
#  Three
#  Four

## Currently prints:
#  Two
#  Three
#  Four

## Conversely, when no arguments are given to the null function,
## it operates mostly normally, but as if the function were not there:

local a=1 b=2 c=3; : One; function { : Two; echo $_; print -l $argv; }; print -l $_ Four;
## Outputs:
#  Two

#  One
#  Four
##     ( second line is 'print -l' but $argv is empty

  It would seem this unexpected behavior may be the result of an unfinished shell source where the best shell behavior was not clear to the programmer.  I admit dealing with null functions is a minor point of dilema with script writing, but I have gotten super intricate with the beautiful script design and features made available to me by ZSH, and I have found that the behavior suggested at "Should print" above is the only way that is consistent in a large script where an alias may use a null function for better handling of parameters without interfering with any currently same-name functions, or when a Heredoc is used and one wants to grab the last argument to use as the parameter of an immediately following null function.

--
Micah micah@xxxxxxxxxxxx
AskMicah.Net, Problem Solving Agency


Messages sorted by: Reverse Date, Date, Thread, Author