Shell脚本之数组概述

本文详细介绍了Shell脚本中数组的各种操作,包括定义、查看内容、获取长度、读取下标、赋值、遍历、切片、替换、删除、追加元素以及在函数中的传递和返回。通过实例展示了如何进行这些操作,帮助读者全面掌握Shell数组的使用。
摘要由CSDN通过智能技术生成

数组

数组是一列数的集合,我们使用索引来区分它

数组定义方法

第一种

数组名=(value0 value1 value2 ...)

第二种

数组名=([0]=value [1]=value [2]=value ...)

第三种

列表名="value0 value1value2 ...."
数组名=($列表名)

第四种

数组名[0]="value"
数组名[1]="value" 
数组名[2]="value"

数组内容查看

echo ${数组名[*]}

数组的数据类型

数值类型

字符类型:使用" "或’ '定义

获取数组长度

arr_number=(1 2 3 4 5)
arr_length=${#arr_number[*]}
​	       ${#arr_number [@]}
echo $arr_length

读取下标赋值

arr_index2=${arr_number[2]}
echo $arr_index2

数组遍历

#!/bin/bash
arr_number=(1 2 3 4 5)
for v in ${arr_number[@]}    in默认以空格为分割
do
echo $v
done

数组切片

arr=(1 2 3 4 5)
echo ${arr[@]}          输出整个数组
echo ${arr[@]:0:2}    获取${数组名[@或*]:起始位置:长度}的值
echo ${arr[@]:2:3}

数组替换

arr=(1 2 3 4 5)
echo ${arr[@]/4/66}         $(数组名[@或*]/查找字符/替换字符)
echo ${arr[@]}              不会替换数组原有内容
arr=(${arr[@]/4/66})        要实现改变原有数组,可通过重新赋值实现
echo ${arr[@]}              相当于创造了一个新的数组

数组删除

arr=(1 2 3 4 5)
unset arr         #删除数组
echo ${arr[*]}
arr=(12345)
unset arr [2]              #删除第三个元素
echo ${arr[*]}

数组追加元素

第一种

array_name [index]=value

第二种

array_name[${#array_name [@]}]=value

第三种

array_name=("${array_name[@]}" value1... valueN)

双引号不能省略,否则,当数组array_name中存在包含空格的元素时会按空格将元素拆分成多个

不能将"@“替换为”",如果替换为"",不加双引号时与"@"的表现一致,加双引号时,会将数组array_name中的所有元素作为一个元素添加到数组中

第四种

array_name+=(value1  ... valueN)

待添加元素必须用"()"包围起来,并且多个元素用空格分隔

向函数传数组参数

将数组变量作为函数参数,函数只会取数组变量的第一个值

zzz() {
   echo "接收到的参数列表:$@"
   newa=$1
   echo "新数组的值为:${abc[*]}"
   }
   
a=(3 2 1 4 5)
echo "原始数组的值为:${a[*]}"
zzz1 $a

从函数返回数组

test2(){
    newa=(`echo $@`)
 sum=0
 for value in ${newa[*]}
 do
    sum=$[$sum + $value]
 done
 echo $sum
}

test3() {
   newa=(`echo $@`)
   for ((i=0;i<=$[$# - 1];i++))
   {
     newa[$i]=$[${newa[$i]} * 2]
   }
   echo ${newa[*]}
   }


a=(3 2 1 4 5)
echo "原始数组的值为:${a[*]}"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值