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

Posted

技术标签:

【中文标题】如何跳过 ash/dash shell 函数中的第一个参数?【英文标题】:How can I skip the first argument in an ash/dash shell function? 【发布时间】:2019-08-17 00:54:39 【问题描述】:

在 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 主义。什么是等价物?

【问题讨论】:

看起来ash 正在将: 应用于由位置参数形成的单个字符串,而不是参数的“数组”。不确定这是错误还是预期(但未记录)的行为。在dash 中,这只是一个“错误替换”错误。 有趣。谢谢你的上下文。 【参考方案1】:

$name:offsetbashism,但您可以使用 POSIX shift 命令来满足您的需求。

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

【讨论】:

以上是关于如何跳过 ash/dash shell 函数中的第一个参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何跳过 CSV 中的第一行项目?

Shell如何实现从文件中的第n行开始读取记录?

如何跳过 ARIMA 模型(python)中的第一个滞后 N 天?

如果机器人框架中的第一个测试用例失败,如何跳过测试用例执行

如何让pandas停止跳过TSV文件中的第一个空白列?

有啥函数,啥可以获取当天的第一个值并在 Python 中跳过同一天的值?