(editado para ajustarse a la respuesta)Cómo cortar una matriz en bash
Mirando la sección "Matriz" en el (1) página de manual de bash, no he encontrado una manera de cortar una matriz bash.
Así me ocurrió con esta función demasiado complicado:
#!/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)"
}
Se utiliza la siguiente manera:
$ A=(foo bar "a b c" 42)
$ slice B A 1 2
$ echo "${B[0]}" # bar
$ echo "${B[1]}" # a b c
¿Hay una mejor manera de hacer eso?
fresca. Busqué en la sección Array y no la vi allí. –
Eso es tonto Chen, ¿por qué sería en la sección Array? * sarc – deltaray
FYI: está en la sección "Expansión de parámetros", junto con muchos otros trucos ingeniosos. –