Chinaunix首页 | 论坛 | 博客
  • 博客访问: 234232
  • 博文数量: 95
  • 博客积分: 400
  • 博客等级: 一等列兵
  • 技术积分: 906
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 16:04
个人简介

人生意义在于积累,而不是日复一日的重复

文章分类

全部博文(95)

文章存档

2016年(2)

2015年(44)

2014年(35)

2011年(5)

2010年(9)

我的朋友

分类: LINUX

2014-12-09 18:00:56

写代码时可能会用到数组,但shell的数组确实非常别扭,当然也可使用其他方式来代替(可能会麻烦一些),本文主要讲解一下数组的使用。

1.    数组的声明
    declare -a array    #数组名为array
数组的声明可以忽略,不强制要求。

2.    插入数据
    2.1    带有下标
    array[key]=value    #array[0]=1
    array=([0]=1  [0]=2)
    注:数组下标不是数字,多个非数字的下标只保留最后一个,并且使用任意非数字下标均可访问该值,非数字下标占用下标0的位置,而数字下标不受影响;数字下标可不连续,只保留有效下标
    2.2    不带下标
    array=(value1 value2 value3) #array=(a b c)
    array="value1 value2 value3" #array="a b c"
    注:以空格分开,下标从0开始

3.    数组访问
    3.1    访问全部值
    ${array[@]}    或    ${array[*]}
   
    3.2    访问单个值
    ${array[key]} 
    
    3.3    访问区间值
    ${array[@]:a}    #访问从下标a开始的所有值
    ${array[@]:a:b}    #访问从下标a开始到b的所有值

    3.4    获取数组长度
    ${#array[@]}    或    ${#array[*]}

    3.5    数组匹配
    ${array[@]#t*e}    #左边开始最短的匹配:"t*e"
    ${array[@]##t*e}     #左边开始最长的匹配:"t*e"
    ${array[@] %o}    #从字符串的结尾开始最短的匹配:"o"
    ${array[@] %%o}    #从字符串的结尾开始最长的匹配:"o"

4.    数组操作
    4.1    删除数组
    unset array    #删除整个数组
    注:unset也可清空很多系统变量,如optind
    
    4.2    删除特定下标下的数
    unset array[key]    #删除某个下标的值

    4.3    数组替换
    ${array[@] /o/m}    #第一个"o"会被替换成"m"
    ${array[@] //o/m}    #所有"o"会被替换成"m"
    
    ${array[@] /#o/k}    #替换字符串前端子串
    ${array[@] /%o/k}    #替换字符串后端子串


阅读(553) | 评论(0) | 转发(0) |
0

上一篇:小赚了一点

下一篇:shell多进程

给主人留下些什么吧!~~