我有一个包含shift
命令的bash脚本。
在bash环境中它可以正常运行,但在zsh环境中,shift
命令似乎不同。
zsh
$ shift
shift: shift count must be <= $#
bash
$ shift
# OK here
< p >“shift”命令是否与“zsh”和“bash”不兼容?我该如何使脚本在“zsh”中运行?< /p >
当 shift
的参数大于位置参数的数量(即$#
)时,两种shell都将其视为错误。
由于没有位置参数时,省略参数的shift
实际上与shift 1
几乎相同,这会导致错误并返回一个非零退出值。
唯一的区别是zsh在出现这种情况时打印错误消息,而bash则不会。
$ set --
$ shift
$ echo $?
1
$ set --
$ shift
shift: shift count must be <= $#
$ echo $?
1