bash (1) 매뉴얼 페이지의 "Array"섹션을 보면 배열을 슬라이스하는 방법을 찾지 못했습니다.
그래서 나는이 지나치게 복잡한 기능을 생각해 냈습니다.
#!/bin/bash
# @brief: slice a bash array
# @arg1: output-name
# @arg2: input-name
# @args: seq args
# ----------------------------------------------
function slice() {
local output=$1
local input=$2
shift 2
local indexes=$(seq $*)
local -i i
local tmp=$(for i in $indexes
do echo "$(eval echo \"\${$input[$i]}\")"
done)
local IFS=$'\n'
eval $output="( \$tmp )"
}
이런 식으로 사용 :
$ A=( foo bar "a b c" 42 )
$ slice B A 1 2
$ echo "${B[0]}" # bar
$ echo "${B[1]}" # a b c
더 좋은 방법이 있습니까?
배열의 끝을 잘라내는 방법을 찾고 있었고 여기로 지시되었습니다. 대답은 여기에 없으며 여기에서 대답을 찾았 기 때문에 중복됩니다 . stackoverflow.com/questions/44939747/… 기본 아이디어는 $ {array : offset : length} 구문에서 길이가 예상되는 $ {# array [@]}-(2 + 7)과 같은 산술 표현식을 가질 수 있다는 것입니다. 여기에 제공된 답변 중 어느 것도 그것을 설명하지 않습니다.
—
Dominic108