假设我有一个数组 $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
,bash
或zsh
last=( "${arr[@]: -1}" )
这比 zsh 风格last=( "${arr[-1]}" )
(除了更便携:到 ksh93 和 bash 4.2 或更早版本,不支持 zsh 风格语法)有一个优势,如果$arr
是一个空数组,$last
也会变成一个空数组,而不是一个空数组。包含一个空元素的数组。
答案2
- 如果您的数组被称为
Info
,并且您正在计算 的最后一个元素的索引,则使用它来索引(另一个数组)Info
是没有意义的。en
- 当你对数组进行索引时,你必须使用大括号;
不是$en[$lst]
但${zh[$lst]}
答案3
您可能想要做的是:
# given that $Info is a populated array..
Lastinfo=(${Info[-1]})
空格已经是默认分隔符,因此数组中列表条目的每个空格分隔元素都Info
将成为新数组中的一个条目LastInfo
。