前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Bash脚本编程之数组

Bash脚本编程之数组

作者头像
枇杷李子橙橘柚
发布2019-05-26 11:06:54
6140
发布2019-05-26 11:06:54
举报
文章被收录于专栏:没有擅长的YcY没有擅长的YcY

声明数组

declare -a array_name

数组初始赋值

  • array_name[xx]=value 其中xx表示下标,为大于等于0的整数数字
  • array_name=([xx]=value1 [yy]=value2 ...) 其中xx表示下标,为大于等于0的整数数字
  • array_name=(value1 value2 value3 ...)declare -a array_name=(value1 value2 value3 ...)

数组追加元素

array=( "${array[@]}" "new element" )array[${#array[*]}]="new element"

复制数组

array2=( "${array1[@]}" )array2="${array1[@]}"

获取单个、全部或连续的部分数组元素

  • ${array_name[xx]} 获取下标为xx的单个元素
  • ${array_name[@]}${array_name[*]} 获取所有元素。在有引号括起的情况下,"${array_name[@]}"表示单独的数组元素,"${array_name[*]}"表示数组元素整体,没有引号括起的情况下都表示单独的数组元素,类似$*$@的区别
  • ${array_name[@]:index:length} 获取连续的部分数组元素,其中:length可省略。 arrayZ=( one two three four five ) # 提取所有元素 echo ${arrayZ[@]:0} # one two three four five # 提取下标从1开始(包含)的所有元素 echo ${arrayZ[@]:1} # two three four five # 提取下标从1开始(包含)的2个元素 echo ${arrayZ[@]:1:2} # two three

获取数组元素个数

${#array_name[*]}${#array_name[@]}

获取数组某个元素的字符串长度

${#array_name[xx]}

提取数组中某个元素的部分字符串

${array_name[xx]:index:length}, 其中:length可省略

删除数组或数组元素

  • unset array_name[xx] 删除下标为xx的数组元素,等同于array_name[xx]=
  • unset array_name 删除整个数组

数组元素的字符串替换/删除操作

通常情况下,形如${name...}表示法的字符串操作都可以应用在数组上,使用${name[@]...}${name[*]...}的方式。

  • 子字符串移除 arrayZ=( one two three four five five ) # 从每个元素的最左侧进行最短匹配,并删除匹配的字符串 echo ${arrayZ[@]#fiv} # one two three four e e echo ${arrayZ[@]#t*e} # one two e four five five # 从每个元素的最左侧进行最长匹配,并删除匹配的字符串 echo ${arrayZ[@]##t*e} # one two four five five # 从每个元素的最右侧进行最短匹配,并删除匹配的字符串 echo ${arrayZ[@]%h*e} # one two t four five five # 从每个元素的最右侧进行最长匹配,并删除匹配的字符串 echo ${arrayZ[@]%%t*e} # one two four five five
  • 子字符串替换 arrayZ=( one two three four fivefive fivefive ) # 对每个元素进行字符串匹配,并替换第一次匹配的字符串 echo ${arrayZ[@]/fiv/XYZ} # one two three four XYZefive XYZefive # 对每个元素进行字符串匹配,并替换所有匹配的字符串 echo ${arrayZ[@]//fiv/XYZ} # one two three four XYZeXYZe XYZeXYZe # 对每个元素进行字符串匹配,并删除所有匹配的字符串 echo ${arrayZ[@]//fi/} # one two three four veve veve # 从每个元素的最左侧进行最长匹配,并替换匹配的字符串 echo ${arrayZ[@]/#f*v/XYZ} # one two three four XYZe XYZe # 从每个元素的最右侧进行最长匹配,并替换匹配的字符串 echo ${arrayZ[@]/%i*e/XYZ} # one two three four fXYZ fXYZ # 其他用法:函数的标准输出作为要替换的字符串 replacement() { echo -n '!!!' } echo ${arrayZ[@]/%e/$(replacement)} # on!!! two thre!!! four fivefiv!!! fivefiv!!!
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 声明数组
  • 数组初始赋值
  • 数组追加元素
  • 复制数组
  • 获取单个、全部或连续的部分数组元素
  • 获取数组元素个数
  • 获取数组某个元素的字符串长度
  • 提取数组中某个元素的部分字符串
  • 删除数组或数组元素
  • 数组元素的字符串替换/删除操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档