关于连字符:如何跳过ash / dash shell函数中的第一个参数?

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

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

1
allparameters() { echo"$@"; }

这给了我:

1
2
$ allparameters yyyyy abffcd efgh
yyyyy abffcd efgh

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

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

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

1
2
3
4
$ butlast yyyyy abffcd efgh
yyy abffcd efgh
$ butlast abffcd efgh
ffcd efgh

我无法在灰页的手册页中找到冒号语法,因此这可能是一个bash-ism。 相当于什么?


${name:offset}bash ism,但您可以使用POSIX shift命令获得所需内容。

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