Shell脚本 - 数组

Shell脚本 - 数组

    • 定义方法
      • - 定义方式1
      • - 定义方式2
      • - 定义方式3
      • - 定义方式4
    • 数组包括的数据类型
      • 1. 数值型
      • 2. 字符类型(字符串):使用""或''定义,防止元素当中有空格,元素按空格分割
      • 3. 获取数组长度
      • 4. 获取数据列表
      • 5. 读取某索引赋值
      • 6. 数组遍历
      • 7. 数组切片
      • 8. 数组替换
      • 9. 数组删除
      • 10. 数组追加
      • 11. 向函数传递数组参数

定义方法

数组名=(元素1 元素2 元素3 元素4 … 元素n)

注:每个元素都有自己的下标(下标值从0开始定义),并且元素可以是字符串或是数字

- 定义方式1

1.num=(10 20 30 40 50) ---数组名=(各元素)
2.echo ${num[*]}       ---输出整个数组内容

img

- 定义方式2

1.num=([0]=10 [1]=20 [2]=30 [3]=40 [4]=50)  ---数组名=([下标值]=元素值)
2.echo ${num[*]}       ---输出整个数组内容

img

- 定义方式3

1.aaa="10 20 30 40 50"  ---定义列表=“列表内容(元素值)”
2.num=($aaa)            ---数组名=($列表名)
3.echo ${num[*]}        ---输出整个数组内容

Shell脚本 - 数组_第1张图片

- 定义方式4

1.num[0]="zhang san"    ---数组名[下标值]="元素"
2.num[1]="zhang san"               .                
3.num[2]="zhang san"               .
4.num[3]="zhang san"    ---数组名[下标值]="元素"
5.echo ${num[*]}        ---输出整个数组内容

Shell脚本 - 数组_第2张图片

数组包括的数据类型

1. 数值型

img

2. 字符类型(字符串):使用""或’'定义,防止元素当中有空格,元素按空格分割

Shell脚本 - 数组_第3张图片

3. 获取数组长度

echo ${#数组名[*或者@]}

4. 获取数据列表

echo ${数组名[*或者@]}

5. 读取某索引赋值

echo ${数组名[下标值(0开始)]}

6. 数组遍历

Shell脚本 - 数组_第4张图片

7. 数组切片

Shell脚本 - 数组_第5张图片

8. 数组替换

Shell脚本 - 数组_第6张图片

img

9. 数组删除

Shell脚本 - 数组_第7张图片

10. 数组追加

- 按照索引进行逐个添加

  ![img](https://img-blog.csdnimg.cn/img_convert/fb1d65831c9d70f602f98afeaab6067a.png) 

- 按照量大索引值进行向后添加

  ![img](https://img-blog.csdnimg.cn/img_convert/8bffa69e6ebc05625c72acb008ccfd48.png) 

- 建立新数组

  ![img](https://img-blog.csdnimg.cn/img_convert/017d7f30b6715cbd82acc07eb43773d2.png) 

  **注:1.双引号不能省略,否则数组中存在包含空格的元素时会按空格将元素拆分成多个**
  **2.不能将“@”替换为“*”,如果替换为“*”,不加双引号时与“@”的表现一致,加双引号时,会将数组array_name中的所有元素作为一个元素添加到数组中** 

- 老数组+=(新元素)

  ![img](https://img-blog.csdnimg.cn/img_convert/0299369b4ef6694948dd8573ddc171af.png) 

11. 向函数传递数组参数

- 需求

  1. 向函数传递数组
  2. 求和 

- 命令

  ```
  test1 (){
     echo "函数接收到的参数列表为:$@"
     newarr=($@)
     echo "新数组的值为:${newarr[@]}"
     sum=0
     for i in ${newarr[@]}
     do
       sum=$[$sum + $i]
     done
     echo "数组所有元素的累加值为:$sum" 
  }
  
  
  arr=(10 20 30 40 50)
  echo "原始数组的值为:${arr[@]}"
  test1 ${arr[*]}
  ```

Shell脚本 - 数组_第8张图片

你可能感兴趣的:(shell,shell,数组)