如何将数组的最后一个元素分配给另一个数组?

如何将数组的最后一个元素分配给另一个数组?

假设我有一个数组 $Info,其元素是 ;

!    total energy              = -1090.13343774 Ry
!    total energy              = -1090.20757070 Ry
!    total energy              = -1090.24296462 Ry
!    total energy              = -1090.25563488 Ry
!    total energy              = -1090.27085564 Ry
!    total energy              = -1090.27693129 Ry
!    total energy              = -1090.28213580 Ry
!    total energy              = -1090.29131927 Ry

我想获取它的最后一个元素,用空格将其分割并赋予另一个数组 $LastInfo。我怎样才能做到这一点 ?

我尝试过这个;

lst=$((${#Info[@]} -1))
IFS=' ' LastInfo=($en[$lst])

但正如张贴在这里该代码不起作用。

答案1

ksh93,bashzsh

last=( "${arr[@]: -1}" )

这比 zsh 风格last=( "${arr[-1]}" )(除了更便携:到 ksh93 和 bash 4.2 或更早版本,不支持 zsh 风格语法)有一个优势,如果$arr是一个空数组,$last也会变成一个空数组,而不是一个空数组。包含一个空元素的数组。

答案2

  1. 如果您的数组被称为Info,并且您正在计算 的最后一个元素的索引,则使用它来索引(另一个数组)Info是没有意义的。en
  2. 当你对数组进行索引时,你必须使用大括号;
    不是
       $en[$lst]
       ${zh[$lst]}

答案3

您可能想要做的是:

# given that $Info is a populated array..
Lastinfo=(${Info[-1]})

空格已经是默认分隔符,因此数组中列表条目的每个空格分隔元素都Info将成为新数组中的一个条目LastInfo

相关内容