相关疑难解决方法(0)

如何在Bash中对数组进行切片

查看bash(1)手册页中的"Array"部分,我没有找到切片数组的方法.

所以我想出了这个过于复杂的功能:

#!/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 )"
}
Run Code Online (Sandbox Code Playgroud)

像这样使用:

$ A=( foo bar "a  b c" 42 )
$ slice B A 1 2
$ echo "${B[0]}"  # bar
$ echo "${B[1]}"  # a …
Run Code Online (Sandbox Code Playgroud)

arrays bash slice

171
推荐指数
2
解决办法
10万
查看次数

标签 统计

arrays ×1

bash ×1

slice ×1