(bearbeiten die Antwort zu passen) schneidenWie ein Array in bash
Mit Blick auf die „Array“ in der bash (1) man-Seite, ich habe nicht einen Weg finden, zu schneiden einen Bash-Array.
So kam ich mit dieser übermäßig komplizierten Funktion auf:
#!/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)"
}
wie folgt verwendet:
$ A=(foo bar "a b c" 42)
$ slice B A 1 2
$ echo "${B[0]}" # bar
$ echo "${B[1]}" # a b c
Gibt es einen besseren Weg, dies zu tun?
Kühl. Ich schaute in die Array-Sektion und sah sie dort nicht. –
Das ist albern Chen, warum sollte es in der Array-Sektion sein? * sarc – deltaray
FYI: Es ist in der "Parameter Expansion" Abschnitt, zusammen mit vielen anderen raffinierten Tricks. –