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

Arrays 如何在bash中使用数组中的偏移量?,arrays,bash,shell,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等在单独的行。我如何纠正这个问题 这里没有理由使用数组切片,

这是我的密码

#! /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等在单独的行。我如何纠正这个问题

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

#! /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

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

#! /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

首先,您需要使用整个数组
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

首先,您需要使用整个数组
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

如果数组是字符串呢?@lufork你是什么意思?如果元素是字符串?这不要紧。比如说,我的数组存储了一行由“3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0。对于简单的情况(如
3 2 1 0 0 0 0 0 0 0 0 0
),可以这样转换:
array=($str)
。第三个元素是
${array[3]}
,通常需要在变量插值周围加双引号。如果数组是字符串呢?@lufork你是什么意思?如果元素是字符串?这不要紧。比如说,我的数组存储了一行由“3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0。对于简单的情况(如
3 2 1 0 0 0 0 0 0
),可以这样转换:
array=($str)
。第三个元素是
${array[3]}
,通常需要在变量插值周围加上双引号。