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
命令是否与 zsh
和 bash
不兼容?如何在 zsh
中制作脚本 运行?
当 shift
的参数大于位置参数的数量(即 $#
)时,两个 shell 都认为这是一个错误。
因为没有参数的 shift
实际上与 shift 1
相同,当没有位置参数时,它会导致错误和 returns 非零退出值。
唯一的区别是 zsh 会在发生这种情况时打印一条错误消息,而 bash 不会。
bash
$ set --
$ shift
$ echo $?
1
zsh
$ set --
$ shift
shift: shift count must be <= $#
$ echo $?
1
我有一个 bash 脚本,其中包含 shift
命令。
在bash中运行没问题,但在zsh环境中,shift
命令似乎不同。
zsh
$ shift
shift: shift count must be <= $#
bash
$ shift
# OK here
shift
命令是否与 zsh
和 bash
不兼容?如何在 zsh
中制作脚本 运行?
当 shift
的参数大于位置参数的数量(即 $#
)时,两个 shell 都认为这是一个错误。
因为没有参数的 shift
实际上与 shift 1
相同,当没有位置参数时,它会导致错误和 returns 非零退出值。
唯一的区别是 zsh 会在发生这种情况时打印一条错误消息,而 bash 不会。
bash
$ set --
$ shift
$ echo $?
1
zsh
$ set --
$ shift
shift: shift count must be <= $#
$ echo $?
1