The bash manual says: If parameter is ‘@’ or ‘*’, the result is length positional parameters beginning at offset. A negative offset is taken relative to one greater than the greatest positional parameter, so an offset of -1 evaluates to the last positional parameter. It is an expansion error if length evaluates to a number less than zero.
But -1 will evaluate to 0 if there are no positional arguments. So that should probably say "so an offset of -1 evaluates to the last positional parameter (or 0 if there no positional arguments)", or something along the lines of "so an offset of -1 evlauates to $#" to avoid confusion. emanuele6