NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: bin/37493: /bin/sh exits if shift fails, but shouldn't
On Sun, 25 May 2008, David Holland wrote:
> > >How-To-Repeat:
> > $ sh -c 'set -ex; shift || echo failed.'
> > + shift
> > shift: can't shift that many
> I'm thinking that shift should be changed to an ordinary builtin
> instead of a special builtin. But I'm not sure what other implications
> this might have. Would someone who understands the finer points of sh
> like to comment?
shift is required to be a special built-in utility
<http://www.opengroup.org/onlinepubs/009695399/utilities/shift.html>.
According to one part of SUSv3, syntax errors in
special built-in utilities are permitted, but
not required, to make the shell exit immediately
<http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_14>.
According to another part of SUSv3, an "option or operand error"
in a special built-in utility means that the shell must exit
<http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_08_01>.
I think that trying to shift too many parameters would fall under this
category.
> Also... ksh exhibits the same behavior. So, apparently, does the
> original Bourne shell. bash and zsh do not. Which makes it unclear if
> it's really a bug or not, too...
I say "not a bug".
--apb (Alan Barrett)
Home |
Main Index |
Thread Index |
Old Index