Christoph Anton Mitterer wrote:
> On Tue, 2011-05-24 at 17:27 -0500, Jonathan Nieder wrote:
>> The value n shall be an unsigned integer less than or equal to
>> the value of the special parameter '#'.
>>
>> so conforming applications will never run into this.
>
> Not sure whether this is meant as "it's undefined to use values > $#".
The Introduction, ยง1.5 "Terminology" says:
shall
For an implementation that conforms to POSIX.1-2008, describes
a feature or behavior that is mandatory. An application can
rely on the existence of the feature or behavior.
For an application or user, describes a behavior that is
mandatory.
So much for the letter of the standard. I agree that it could be
made clearer --- for example, the Application Usage section could
point out that shells differ from one another on this point. A survey
of some shells on this machine:
$ bash -c 'shift 20; echo $?'; echo $?
1
0
$ zsh -c 'emulate sh; shift 20; echo $?'; echo $?
zsh:shift:1: shift count must be <= $#
1
0
$ dash -c 'shift 20; echo $?'; echo $?
dash: 1: shift: can't shift that many
2
$ ksh93 -c 'shift 20; echo $?'; echo $?
ksh93[1]: shift: 20: bad number
1
$ pdksh -c 'shift 20; echo $?'; echo $?; # likewise with mksh, posh
pdksh: shift: nothing to shift
1
> See http://austingroupbugs.net/view.php?id=459
Thanks again for working on this.
Cheers,
Jonathan
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]