首页 Shell 数组
文章
取消

Shell 数组

bash 支持一维数组,不支持多维数组。并且没有限定数组长度(不建议数组太长或下标非连续)。

数组元素的下标以 0 开始,获取元素要利用下标,下标可以是整数或算术表达式,其值应大于等于 0。

定义数组

  • 直接定义,array=(1 2 3 4 5),定义数组需要使用()圆括号,每个元素之间用空格隔开。
  • 依次赋值,array[0]=1; array[3]=4,数组的下标可以不连续,并且下标的范围没有限制。
  • 如果数组元素包含空白符,请用引号括起来,如:array=('foo bar baz' 'hello world')

访问数组

  • echo ${array[0]},使用给定下标,整数形式;
  • echo ${array[1 - 1]},使用算数表达式,支持+ - * / % **加减乘除、取余、乘方;
  • ind=0; echo ${array[ind]},使用变量,变量值须为大于等于 0 的整数,并且不需要加$

所有元素

  • echo ${array[@]},每个元素都作为单独参数传递,元素几个参数就几个
  • echo ${array[*]},使用空格连接各元素(concat),作为一个字符串参数传递
  • 当然,一般情况下是体现不出差异的;但与双引号一起使用时,会表现得不一样

test.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash

arr=(1 2 3 4 5)

for i in "${arr[@]}"; do
    echo $i
done

echo "------------"

for i in "${arr[*]}"; do
    echo $i
done

执行结果

1
2
3
4
5
6
7
8
$ ./test.sh
1
2
3
4
5
------------
1 2 3 4 5

数组长度

  • echo ${#arr[@]}echo ${#arr[*]} 都可以
  • echo ${#arr[0]} 获取某个元素(字符串)的长度
本文由作者按照 CC BY 4.0 进行授权

Shell 变量

Shell 位置参数