zoukankan      html  css  js  c++  java
  • 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 
    
    
    
  • 相关阅读:
    hdu 5007 水题 (2014西安网赛A题)
    hdu 1698 线段树(成段替换 区间求和)
    poj 3468 线段树 成段增减 区间求和
    hdu 2795 公告板 (单点最值)
    UVaLive 6833 Miscalculation (表达式计算)
    UVaLive 6832 Bit String Reordering (模拟)
    CodeForces 124C Prime Permutation (数论+贪心)
    SPOJ BALNUM (数位DP)
    CodeForces 628D Magic Numbers (数位DP)
    POJ 3252 Round Numbers (数位DP)
  • 原文地址:https://www.cnblogs.com/g2thend/p/13219947.html
Copyright © 2011-2022 走看看