仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1121|回复: 8
打印 上一主题 下一主题

[shell编程] 带来一篇shell数组小结

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 20:21:05 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
欢迎大家来到仓酷云论坛!数组作为一种特别的数据布局在任何一种编程言语中都有它的一席之地,固然bashshell也不破例。本文就shell数组来做一个小的总结。
在这里只会商一维数组的情形,关于***数组(现实上,你得用一维数组的***来摹拟),不触及。这里包含数组的复制,盘算,删除,交换。

数组的声明:
[size=1em]
[size=1em]1

[size=1em][size=1em]1)array[key]=value#array[0]=one,array[1]=two




[size=1em]
[size=1em]1

[size=1em][size=1em]2)declare-aarray#array被看成数组名




[size=1em]
[size=1em]1

[size=1em][size=1em]3)array=(value1value2value3...)




[size=1em]
[size=1em]1

[size=1em][size=1em]4)array=([1]=one[2]=two[3]=three...)




[size=1em]
[size=1em]1

[size=1em][size=1em]5)array="onetwothree"#echo${array[0|@|*]},把array变量看成数组来处置,但数组元素只要字符串自己




数组的会见:
[size=1em]
[size=1em]1

[size=1em][size=1em]1)${array[key]}#${array[1]}




数组的删除
[size=1em]
[size=1em]1

[size=1em][size=1em]1)unsetarray[1]#删除数组中第一个元素




[size=1em]
[size=1em]1

[size=1em][size=1em]2)unsetarray#删除全部数组




盘算数组的长度:
[size=1em]
[size=1em]1

[size=1em][size=1em]1)${#array}




[size=1em]
[size=1em]1

[size=1em][size=1em]2)${#array[0]}#同上。${#array
  • }、${#array[@]}。注重同#{array:0}的区分



    数组的提取
    从尾部入手下手提取:

    [size=1em]
    [size=1em]1

    [size=1em]2

    [size=1em]3

    [size=1em]4

    [size=1em][size=1em]array=([0]=one[1]=two[2]=three[3]=four)
    [size=1em]${array[@]:1}#twothreefour,撤除第一个元素后一切元素,那末${array[@]:0}暗示一切元素
    [size=1em]${array[@]:0:2}#onetwo
    [size=1em]${array[@]:1:2}#twothree



    子串删除
    [size=1em]
    [size=1em]1

    [size=1em]2

    [size=1em]3

    [size=1em]4

    [size=1em]5

    [size=1em]6

    [size=1em]7

    [size=1em]8

    [size=1em]9

    [size=1em]10

    [size=1em]11

    [size=1em]12

    [size=1em]13

    [size=1em]14

    [size=1em]15

    [size=1em][size=1em][root@localhostdev]#echo${array[@]:0}
    [size=1em]onetwothreefour
    [size=1em]
    [size=1em][root@localhostdev]#echo${array[@]#t*e}#右边入手下手最短的婚配:"t*e",这将婚配到"thre"
    [size=1em]onetwoefour
    [size=1em]
    [size=1em][root@localhostdev]#echo${array[@]##t*e}#右边入手下手最长的婚配,这将婚配到"three"
    [size=1em]
    [size=1em][root@localhostdev]#array=([0]=one[1]=two[2]=three[3]=four)
    [size=1em]
    [size=1em][root@localhostdev]#echo${array[@]%o}#从字符串的开头入手下手最短的婚配
    [size=1em]onetwthreefour
    [size=1em]
    [size=1em][root@localhostdev]#echo${array[@]%%o}#从字符串的开头入手下手最长的婚配
    [size=1em]onetwthreefour



    子串交换
    [size=1em]
    [size=1em]1

    [size=1em][size=1em][root@localhostdev]#array=([0]=one[1]=two[2]=three[3]=four)




    第一个婚配到的,会被删除
    [size=1em]
    [size=1em]1

    [size=1em]2

    [size=1em][size=1em][root@localhostdev]#echo${array[@]/o/m}

    [size=1em]mnetwmthreefmur



    一切婚配到的,城市被删除
    [size=1em]
    [size=1em]1

    [size=1em]2

    [size=1em][size=1em][root@localhostdev]#echo${array[@]//o/m}

    [size=1em]mnetwmthreefmur



    没有指定交换子串,则删除婚配到的子符
    [size=1em]
    [size=1em]1

    [size=1em]2

    [size=1em][size=1em][root@localhostdev]#echo${array[@]//o/}

    [size=1em]netwthreefur



    交换字符串前端子串
    [size=1em]
    [size=1em]1

    [size=1em]2

    [size=1em][size=1em][root@localhostdev]#echo${array[@]/#o/k}

    [size=1em]knetwothreefour



    交换字符串后端子串
    [size=1em]
    [size=1em]1

    [size=1em]2

    [size=1em][size=1em][root@localhostdev]#echo${array[@]/%o/k}

    [size=1em]onetwkthreefour



    如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!
  • 您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

    GMT+8, 2024-5-14 08:37

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表