(編輯以適合的答案)怎麼給在bash數組
展望在bash(1)手冊頁的「陣列」一節,我沒有找到一個方法來切一個bash數組。
所以我想出了這個過於複雜的功能:
#!/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
有沒有更好的方式來做到這一點?
很酷。我看着陣列部分,並沒有看到它。 – 2009-08-26 17:17:31
這是愚蠢的陳,爲什麼它會在陣列部分? * sarc – deltaray 2014-05-01 02:54:41
供參考:它在「參數擴展」部分,以及許多其他漂亮的技巧。 – 2014-05-16 22:27:51