배열의 마지막 요소를 다른 배열에 할당하는 방법은 무엇입니까?

배열의 마지막 요소를 다른 배열에 할당하는 방법은 무엇입니까?

요소가 다음과 같은 $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

  1. 배열이 호출되고 Info마지막 요소의 인덱스를 계산하는 경우 Info이를 인덱스(다른 배열)에 사용하는 것은 의미가 없습니다.en
  2. 배열에 대한 색인을 생성할 때는 중괄호를 사용해야 합니다
    .
       $en[$lst]
    하지만
       ${zh[$lst]}

답변3

당신이 하고 싶은 일은 다음과 같습니다:

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

공백은 이미 기본 구분 기호이므로 배열에 있는 목록 항목의 공백으로 구분된 각 요소는 Info새 배열의 항목이 됩니다 LastInfo.

관련 정보