• shell脚本之数组


    目录

    一、shell数组的定义

    二、定义数组的方法

    三、数组的数据类型

    四、获取数组的数据列表

    五、获取数组长度

    六、获取数组下标对应的值

    七、数组的常用操作

    7.1数组的遍历

    7.2数组切片

    7.3数组替换

    7.4数组删除和指定下标的值删除

    7.5数组追加元素

    查看所有数组—declare -a 

    向函数传数组参数


    一、shell数组的定义

    • 数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组)

    • 数组元素的下标由 0 开始。

    • Shell 数组用括号来表示,元素用"空格"符号分割开

    • 在shell语句中,使用、遍历数组的时候,数组格式要写成 ${arr[@]} 或 ${arr[*]}

    二、定义数组的方法

    法一:

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

    1. [root@localhost ~]# num=(1 2 3 4 5 6)
    2. [root@localhost ~]# echo ${num[@]}
    3. 1 2 3 4 5 6

    法二:

    数组名=([0]=value0 [1]=value1......)

    1. [root@localhost ~]# num1=([0]=1 [1]=2 [2]=3 [3]=4 [4]=5 [5]=6)
    2. [root@localhost ~]# echo ${num1[@]}
    3. 1 2 3 4 5 6

    法三:

    数组名[0]="value"

    数组名[1]="value"

    数组名[2]="value"

    数组名[3]="value"

    1. [root@localhost ~]# c[0]=1
    2. [root@localhost ~]# c[1]=2
    3. [root@localhost ~]# c[2]=3
    4. [root@localhost ~]# c[3]=4
    5. [root@localhost ~]# echo ${c[@]}
    6. 1 2 3 4

    三、数组的数据类型

    • 数值类型、字符类型、混合类型...

    1. [root@localhost ~]# cc=(1 2 a ass)
    2. [root@localhost ~]# echo ${cc[@]}
    3. 1 2 a ass

    四、获取数组的数据列表

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

    五、获取数组长度

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

    六、获取数组下标对应的值

    下标从零开始

    数组名=(元素0  元素1  元素2  ……)                    
    echo ${数组名[索引值]}                            输出数组索引值对应的元素,索引值为从0开始

    echo ${数组名[0]}

    1. [root@localhost ~]# echo ${c[@]}
    2. 1 2 3 4
    3. [root@localhost ~]# echo ${c[0]}
    4. 1
    5. [root@localhost ~]# echo ${c[2]}
    6. 3

    七、数组的常用操作

    7.1数组的遍历

    7.2数组切片

    1. [root@localhost ~]# echo ${a[@]}
    2. 1 2 3 4 65 66 输出数组
    3. [root@localhost ~]# echo ${a[@]:1:3}
    4. 2 3 4 输出数组1-3下标的值
    5. [root@localhost ~]# echo ${a[@]:1:1}
    6. 2
    7. [root@localhost ~]# echo ${a[@]:1:8}
    8. 2 3 4 65 66 输出数组1后面的所有元素

    7.3数组替换

    #临时替换
    [root@yxp data]#echo ${a[@]/4/7} 
     
    #重新赋值,可以永久修改
    [root@yxp data]#a=(${a[@]/4/7})

    1. #临时替换
    2. [root@localhost ~]# echo ${a[*]}
    3. 1 2 3 4 5 6 7 8 9
    4. [root@localhost ~]# echo ${a[*]/4/7}
    5. 1 2 3 7 5 6 7 8 9
    6. [root@localhost ~]# a=(1 2 3 4 5 6 74 8 9)
    7. [root@localhost ~]# echo ${a[*]/4/7}
    8. 1 2 3 7 5 6 77 8 9 这里的替换是把数组中所有的4都替换掉

     

    7.4数组删除和指定下标的值删除

    unset  数组名

    unset  数组名[下标]

    7.5数组追加元素

    法一:直接使用下标进行元素的追加

    数组名[下标]=变量

    法二:将数组的长度作为下标进行追加元素(其实就是将下标换了一种表达方式)

    数组名[${数组名[@]}]=变量名

    法三:使用+=进行追加

    数组名+=(变量1 变量2 ...)

     

    查看所有数组—declare -a 

     

    向函数传数组参数

    1. //将一个数组当做参数列表传入函数执行,实现数组值翻倍
    2. [root@localhost1 ~]#vim chuancan.sh
    3. #!/bin/bash
    4. test1() {
    5. arrlist=($@) #关键在这里获取数组传入的参数
    6. for ((i=0;i<${#arrlist[@]};i++))
    7. do
    8. newarr[$i]=$[${arrlist[$i]} * 2]
    9. done
    10. echo ${newarr[@]}
    11. }
    12. arr=(10 20 30 40 50)
    13. echo "原始数组为:${arr[@]}"
    14. result=$(test1 ${arr[@]})
    15. echo "数组值翻倍后为:$result"
    16. [root@localhost1 ~]#bash chuancan.sh
    17. 原始数组为:10 20 30 40 50
    18. 数组值翻倍后为:20 40 60 80 100

  • 相关阅读:
    基于Java+Spring+mybatis+vue+element实现酒店管理系统
    彻底弄懂C#中delegate、event、EventHandler、Action、Func的使用和区别
    如何看待为了省小钱而花费时间
    win11电脑怎么设置定时关机
    阿里Redis技术修炼宝典,神功大成指日可待
    Linux系统架构----LNMP平台部署中部署wordpress
    Redis面试题(二)
    【Redis】Hash哈希类型
    0-RTT Key Exchange
    IP地址查询和代理服务器:双重保护隐私
  • 原文地址:https://blog.csdn.net/A_Xiao_CaiJI/article/details/126638807