如何跳过 ash/dash shell 函数中的第一个参数?

How can I skip the first argument in an ash/dash shell function?

在 ash/dash 函数中,我可以像这样引用完整的参数列表:

allparameters() { echo "$@"; }

这给了我:

$ allparameters yyyyy abffcd efgh
yyyyy abffcd efgh

我想跳过yyyyy,所以我尝试了${@:2}

butlast() { echo "${@:2}"; }

但是,这会跳过前两个字符:

$ butlast yyyyy abffcd efgh
yyy abffcd efgh
$ butlast abffcd efgh
ffcd efgh

我没能在 the man page 中找到 ash 的冒号语法,所以这可能是 bash 主义。什么是等价物?

${name:offset} 是一种 bash 主义,但您可以使用 POSIX shift 命令来满足您的需求。

$ butlast() { shift; echo "$@"; }
$ butlast foo bar baz
bar baz