Check $# before trying to shift off $@

In ZSH, if $@ is empty, a warning is issued when trying to
use `shift`. For instance:

```
zsh% shift
shift: shift count must be <= $#
```

The fix is simple, you just check $# beforehand and no
warning is issued:
```
zsh% [[ $# > 0 ]] && shift
```