设为首页 收藏本站
查看: 880|回复: 0

shell脚本数组 小结

[复制链接]
累计签到:4 天
连续签到:1 天
发表于 2018-8-29 11:24:02 | 显示全部楼层 |阅读模式
  定义数组
  在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。定义数组的一般形式为:
  代码如下:
  数组名=(值1 值2 ... 值n)
  例如:
  代码如下:
  array_name=(value0 value1 value2 value3)
  或者
  代码如下:
  array_name=(
  value0
  value1
  value2
  value3
  )
  还可以单独定义数组的各个分量:
  代码如下:
  array_name[0]=value0
  array_name[1]=value1
  array_name[n]=valuen
  可以不使用连续的下标,而且下标的范围没有限制。
  读取数组
  读取数组元素值的一般格式是:
  代码如下:
  ${数组名[下标]}
  例如:
  代码如下:
  valuen=${array_name[n]}
  使用@符号可以获取数组中的所有元素,例如:
  代码如下:
  echo ${array_name[@]}
  获取数组的长度
  获取数组长度的方法与获取字符串长度的方法相同,例如:
  代码如下:
  # 取得数组元素的个数
  length=${#array_name[@]}
  # 或者
  length=${#array_name
  • }
      # 取得数组单个元素的长度
      lengthn=${#array_name[n]}
      附:shell数组小结
      不知道 是什么时候写的东西,整理文档时被考古发现,给那些闲着蛋疼之人,一笑而过吧。如果本文中的错误给您带来所有的精神损失,请找保险公司理陪!当然你可以告诉我 (倾诉)
      数组作为一种特殊的数据结构在任何一种编程语言中都有它的一席之地,当然bash shell也不例外。本文就shell数组来做一个小的总结。
      在这里只讨论一维数组的情况,关于多维数组(事实上,你得用一维数组的方法来模拟),不涉及。这里包括数组的复制,计算,删除,替换。
      数组的声明:
      代码如下:
      array[key]=value # array[0]=one,array[1]=two
      declare -a array # array被当作数组名
      array=( value1 value2 value3 ... )
      array=( [1]=one [2]=two [3]=three ... )
      array="one two three" # echo ${array[0|@|*]},把array变量当作数组来处理,但数组元素只有字符串本身
      数组的访问:
      代码如下:
      ${array[key]} # ${array[1]}
      数组的删除
      代码如下:
      unset array[1] # 删除数组中第一个元素
      unset array # 删除整个数组
      计算数组的长度:
      代码如下:
      ${#array}
      ${#array[0]} #同上。 ${#array
  • } 、${#array[@]}。注意同#{array:0}的区别
      数组的提取
      从尾部开始提取:
      代码如下:
      array=( [0]=one [1]=two [2]=three [3]=four )
      ${array[@]:1} # two three four,除掉第一个元素后所有元素,那么${array[@]:0}表示所有元素
      ${array[@]:0:2} # one two
      ${array[@]:1:2} # two three
      子串删除
      代码如下:
      [root@localhost dev]# echo ${array[@]:0}
      one two three four
      [root@localhost dev]# echo ${array[@]#t*e} # 左边开始最短的匹配:"t*e",这将匹配到"thre"
      one two e four
      [root@localhost dev]# echo ${array[@]##t*e} # 左边开始最长的匹配,这将匹配到"three"
      [root@localhost dev]# array=( [0]=one [1]=two [2]=three [3]=four )
      [root@localhost dev]# echo ${array[@] %o} # 从字符串的结尾开始最短的匹配
      one tw three four
      [root@localhost dev]# echo ${array[@] %%o} # 从字符串的结尾开始最长的匹配
      one tw three four
      子串替换
      代码如下:
      [root@localhost dev]# array=( [0]=one [1]=two [2]=three [3]=four )
      第一个匹配到的,会被删除
      代码如下:
      [root@localhost dev]# echo ${array[@] /o/m}
      mne twm three fmur
      所有匹配到的,都会被删除
      代码如下:
      [root@localhost dev]# echo ${array[@] //o/m}
      mne twm three fmur
      没有指定替换子串,则删除匹配到的子符
      代码如下:
      [root@localhost dev]# echo ${array[@] //o/}
      ne tw three fur
      替换字符串前端子串
      代码如下:
      [root@localhost dev]# echo ${array[@] /#o/k}
      kne two three four
      替换字符串后端子串
      代码如下:
      [root@localhost dev]# echo ${array[@] /%o/k}
      one twk three four


  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-558121-1-1.html 上篇帖子: Shell.Users 提权 下篇帖子: SHELL学习笔记本 一
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

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