我想知道bash中是否有一种简单的方法可以将大型阵列分解为几个较小的阵列。
我目前在想这样的事情:
for ((i = 0; i<= (bigArrayLength/2); i++)) do
bigArray[i] = smallArray[i]
done
for ((i = (bigArrayLength/2); i <=bigArrayLength; i++))
do
bigArray[i] = secondSmallArray[i]
done
但是必须有一个更好的方法来解决它。
有什么建议么?
谢谢!
最佳答案
如果您的bash
版本为3.2或更高版本,则可以使用新的“subelement”语法(${bigArray[@]:index_of_first_element:element_count}
)来完成此操作,但请注意-如果元素值中包含空格,则可能会在未经预处理的情况下严重中断。
所以这个想法是这样的:
cnt="${#bigArray[@]}"
let cnt1="$cnt/2"
let cnt2="$cnt - $cnt1 - 1"
# this way we remove the rounding error if the count was odd and account for 0-based indexing
smallArray=( "${bigArray[@]:0:$cnt1}" )
secondSmallArray=( "${bigArray[@]:$cnt1:$cnt2}" )
关于arrays - Bash:有没有一种方法可以轻松地将大型阵列分解为较小的阵列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11399999/