Zsh 中的 Shift 失败:"shift count must be <= $#"

Shift fails in Zsh: "shift count must be <= $#"

我有一个 bash 脚本,其中包含 shift 命令。

在bash中运行没问题,但在zsh环境中,shift命令似乎不同。

zsh

$ shift
shift: shift count must be <= $#

bash

$ shift

# OK here

shift 命令是否与 zshbash 不兼容?如何在 zsh 中制作脚本 运行?

shift 的参数大于位置参数的数量(即 $#)时,两个 shell 都认为这是一个错误。

因为没有参数的 shift 实际上与 shift 1 相同,当没有位置参数时,它会导致错误和 returns 非零退出值。

唯一的区别是 zsh 会在发生这种情况时打印一条错误消息,而 bash 不会。

bash

$ set --
$ shift
$ echo $?
1

zsh

$ set --
$ shift
shift: shift count must be <= $#
$ echo $?
1