ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

bash 数组

2020-07-01 16:37:12  阅读:185  来源: 互联网

标签:arr name 元素 myarray echo 数组 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 


标签:arr,name,元素,myarray,echo,数组,bash
来源: https://www.cnblogs.com/g2thend/p/13219947.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有