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