(отредактирован, чтобы соответствовать ответ)Как разрезать массив в Баш
Глядя в разделе «Массив» в Баш (1) человек страницы, я не нашел способ ломтик массив Баш.
Так что я пришел с этой слишком сложной функции:
#!/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
есть лучший способ сделать это?
Прохладный. Я посмотрел в разделе «Массив» и не видел его там. –
Это глупое Чэнь, почему бы это было в разделе Array? * sarc – deltaray
FYI: он находится в разделе «Расширение параметров», наряду с множеством других отличных трюков. –