如何在bash中使用数组中的偏移量?

时间:2016-09-17 23:20:44

标签: arrays bash shell

这是我的代码。

#! /bin/bash
array=(3 2 1 0 0 0 0 0 0 0)
for i in {0..10}
do
    this=${array:$i:$((i+1))}
    echo $this
done

我想分别打印我的号码。我已经使用这一行来使用偏移数来获取数组元素。

    this=${array:$i:$((i+1))}

然而,我只有3张印刷品,所有都是新线。我基本上想在单独的行上打印3,2,1等。我该如何纠正?

2 个答案:

答案 0 :(得分:3)

首先,您需要使用整个数组array[@],而不是array

echo "${array[@]:3:2}"

然后,您可以将索引更改为简单变量名称:

this=${array[@]:i:i+1}

然后,您可能只需要提取列表中的一个值:

this=${array[@]:i:1}

试试这段代码:

array=(3 2 1 0 0 0 0 0 0 0)
for i in {0..10}
do
    this=${array[@]:i:1}
    echo "$this"
done

答案 1 :(得分:1)

这里没有理由使用数组切片,只需访问数组的各个元素。试试这个:

#! /bin/bash
array=(3 2 1 0 0 0 0 0 0 0)
for i in {0..10}
do
    this=${array[$((i+1))]}
    echo $this
done

通常,您可以访问数组中的单个元素:${array[3]}

请注意,在这种情况下,最好这样做:

array=(3 2 1 0 0 0 0 0 0 0)
for this in "${array[@]}"
do
    echo $this
done