Bash-创建一个数组并递增每个索引 - 然后是最大的索引

时间:2012-11-30 14:07:29

标签: linux arrays bash

知道问题一目了然,我有这张表:

   ID Start End
   1  1     4
   2  2     5
   3  4     9
   4  8     10

我想在订单中设置这些(如下图所示)。我需要一个数组,其索引将相对于开始和结束位置递增1,并获得所有的最大索引。例如:

1. ####
2.  ####
3.    ######
4.        ### 

so array will be;
    array =(1,2,2,3,2,1,1,2,2,1)

我没有开始写任何东西,因为我无法确定这是否可以用bash。请建议..

1 个答案:

答案 0 :(得分:2)

只需循环遍历每个区间的所有元素:

#! /bin/bash

array=()
while read id start end ; do
    for (( i=start ; i<=end ; i++ )) ; do
        let array[i]++
    done
done << EOF
1  1     4
2  2     5
3  4     9
4  8     10
EOF

echo "${array[@]}"