Shell脚本 - 数组

本文介绍了Shell脚本中数组的定义方法,包括四种不同的定义方式,并详细讲解了数组包含的数据类型,如数值型和字符类型。此外,还涵盖了获取数组长度、获取数据列表、读取指定索引、数组遍历、切片、替换、删除、追加以及如何在函数中传递数组参数等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义方法

数组名=(元素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[*]}        ---输出整个数组内容

img

- 定义方式4

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

img

数组包括的数据类型

1. 数值型

img

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

img

3. 获取数组长度

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

4. 获取数据列表

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

5. 读取某索引赋值

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

6. 数组遍历

img

7. 数组切片

img

8. 数组替换

img

img

9. 数组删除

img

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[*]}
  ```

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值