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