这是我的代码。
#! /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等。我该如何纠正?
答案 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