【问题标题】:Bash: all of array except last elementBash:除最后一个元素外的所有数组
【发布时间】:2017-07-06 04:20:20
【问题描述】:

Bash 有一种简洁的方式来给出数组中除第一个之外的所有元素:

"${a[@]:1}"           

获取除我找到的最后一个以外的所有内容:

"${a[@]:0:$((${#a[@]}-1))}"

但是,伙计,那太丑了。

有没有更好的选择?

【问题讨论】:

  • 你可以用b=("${a[@]}"); unset "b[-1]"; do_whatever_with "${b[@]}"破解

标签: bash


【解决方案1】:

我不确定它会有多大的改进,但你可以去掉算术运算符($(()))和起始索引(0 这里):

${a[@]::${#a[@]}-1}

所以:

$ foo=( 1 2 3 )

$ echo "${foo[@]::${#foo[@]}-1}"
1 2

如您所见,改进纯粹是语法上的;这个想法保持不变。

【讨论】:

  • zsh 用户注意:如果您保留起始索引,则简化工作。
猜你喜欢
  • 1970-01-01
  • 2011-01-24
  • 2023-01-05
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多