• bash 数组


    bash 数组

    普通的索引数组

    定义数组

    数组初始化:在赋值语句的等号右侧,紧挨着用一对括号表示数组,数组中元素之间使用“空格”分隔

    myarray=()  #定义一个空数组
    myarray=(1 2 3 4 5)   #全部元素为数字
    myarray=(one two three four five)  #全部元素为字符串
    myarray=(1 two 3 three 4 five)  #元素由数值和字符串构成
    myarray=(1 two 3 “a phrase” 5 now)
    
    
    #数组元素赋值定义
    myarray[0]=1
    myarray[2]=test
    myarray[3]="a phrase"
    
    

    引用操作数组

    引用整个数组,需要使用${arr_name[*]}或${arr_name[@]}形式

    #用下标读取某个元素的值
    arr_element2=${arr_name[2]},即形式:${数组名[下标]}
    
    #用#获取数组长度:${#数组名[@]} 或${#数组名[*]} 
    arr_len=${#arr_name[*]}或${#arr_name[@]}
    
    #用#获取某元素值的长度
    arr_elem_len=${#arr_name[index]}   #index为数组下标索引
    
    #删除数组
    删除数组某个元素,删除后,索引依旧存在,但是元素值为空
    unset arr_name[index]
    删除整个数组:
    unset arr_number
    
    
    
    #数组分片访问
    分片访问形式为:${数组名[@或*]:开始下标:偏移长度}
    arr_name=(1 2 3 test go now)
    echo ${arr_name[@]:1:2},将输出2 3
    ${arr_name[@]:1:2},这里分片访问从下标1开始,元素个数为2。
    
    
    
    #数组扩展
    数组支持”+=“赋值运算符,利用这一点可以通过这种方式往一个已知数组中更方便的添加元素,特别是往空数组中填充元素时非常有用
    
    myarry=()
    myarry+=(1)
    echo ${myarry[@]}
    myarry+=(test 2 3 go)
    echo ${myarry[@]}
    
    
    #模式替换
    格式为:${数组名[@或*]/模式/新值}
    例如:echo ${arr_name[@]/now/past},将输出1 2 3 test go past
    
    #数组的遍历
    定义了数组arr_name=(1 2 3 test go now "a whole sentence")
    
    for i in "${arr_nmae[@]}" ; do echo $i ;done 
    
    如果使用${arr_name[*]}格式引用数组进行遍历,将得到一个数组元素以空格分隔的字符串
    for i in "${arr_nmae[*]}" ; do echo $i ;done 
    #遍历数组时需要加引号
     "${arr_nmae[@]}"         
    

    字符串转化为数组

    一般ls 获取目录下的文件时

    jarNames_tmp=$(ls  */*.jar )
    
    #获取的是以空格作为分隔符的字符串
    
    ##将字符串转化为数组
    jarNames=(${jarNames_tmp// /})
    for i in "${jarName[@]}" ; do echo $i ;done 
    
    
    
  • 相关阅读:
    Getting Started with Recovery Manager (RMAN) (文档 ID 360416.1)
    enctype的2个值
    laravel 去掉资源的顶层包裹 withoutWrapping方法
    hash_equals(),防止时序攻击,字符串比较函数
    moment.js 处理“几天前”,“几个月前”
    redis hash 应用场景
    vue 3个插槽示例(具名插槽)
    vue 插槽的基本使用
    redis hash
    redis 分布式系统全局序列号
  • 原文地址:https://www.cnblogs.com/g2thend/p/13219947.html
Copyright © 2020-2023  润新知