26 AĞUSTOS 2009, ÇARŞAMBA
Nasıl bash bir dizi dilime
(cevap sığdırmak için düzenlenmiş)
"Bash(1) man sayfası, bash dizi bir dilim. bir yolunu bulamadım" bölüm Dizi
Yukarı aşırı karmaşık bu fonksiyon ile geldim:
#!/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 )"
}
Eskiden bu gibi:
$ A=( foo bar "a b c" 42 )
$ slice B A 1 2
$ echo "${B[0]}" # bar
$ echo "${B[1]}" # a b c
Daha iyi bir yolu var mı?
CEVAP
26 AĞUSTOS 2009, ÇARŞAMBA
Bash Parametre Genişleme bölümü man
sayfasına bakın. Dizinin içeriğini döndürür, ":1:2" uzunlukta bir dilim Endeksi 1'den başlayarak 2 alır.
A=( foo bar "a b c" 42 )
B=("${A[@]:1:2}")
echo "${B[@]}" # bar a b c
echo "${B[1]}" # a b c
Bunu Paylaş:
Nasıl bash sayı değişkenleri tarafında...
Nasıl BASH bir dizi sıralamak için...
Nasıl JavaScript bir dizi boş?...
Nasıl bir dizi belirli bir değeri vars...
Nasıl Bash dize değişkenleri bitiştirm...