配列の最後の要素を別の配列に割り当てる方法は?

配列の最後の要素を別の配列に割り当てる方法は?

要素に次の $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

によってksh93bashまたはzsh

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

これはlast=( "${arr[-1]}" )zshスタイルに比べて利点があります(移植性が高いだけでなく、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

関連情報