Bash中数组的操作教程
程序员文章站
2022-04-05 22:19:30
前言
bash只支持一维数组,但参数个数没有限制。
如声明一个数组:
declare -a array
(其实不用声明,按数组方式直接赋值给变量...
前言
bash只支持一维数组,但参数个数没有限制。
如声明一个数组:
declare -a array
(其实不用声明,按数组方式直接赋值给变量即可,bash就知道那是数组)
一、定义数组
1. 使用[]操作符
names[0]='zrong' names[1]='jacky'
2. 使用()直接赋值
names=('zrong' 'jacky') # 或 names=([0]='zrong' [1]='jacky')
3. 使用declare -a
定义数组。这种方法可以将一个空的变量定义成数组类型。
declare -a names
4. 从文件中读取数组
cat>names.txt zrong jacky sweet ctrl+c # 将每一行读取为数组的一个元素 names=(`cat 'names.txt'`)
二、读取数组
1. 数组取值
和actionscript一样,bash也使用[]操作符和基于0的下标来取值:
adobe=('flash' 'flex' 'photoshop') echo ${adobe[0]} # 打印 # flash
2. 数组长度(元素个数)
使用“@”这个特殊的下标,可以将数组扩展成列表,然后就可以使用bash中的获取变量长度的操作符“#”来获取数组中元素的个数了:
adobe=('flash' 'flex' 'photoshop') echo ${#adobe[@]} # 打印 # 3
有趣的是,没有定义的数组下标,并不会占用数组中元素的个数:
adobe=([0]='flash' [2]='flex' [4]='photoshop') echo ${#adobe[@]} # 打印 # 3
3. 获取数组的一部分
命令替换对数组也是有效的,可以使用偏移操作符来取得数组的一部分:
adobe=('flash' 'flex' 'photoshop' 'dreamweaver' 'premiere') echo ${adobe[@]:1:3} # 打印 # flex photoshop dreamweaver echo ${adobe[@]:3} # 打印 # dreamweaver premiere
4. 连接两个数组
adobe=('flash' 'flex' 'photoshop' 'dreamweaver' 'premiere') adobe2=('fireworks' 'illustrator') adobe3=(${adobe[@]} ${adobe2[@]}) echo ${#adobe3[@]} # 打印 # 7
三、修改数组
1. 替换数组元素
模式操作符对数组也是有效的,可以使用它来替换数组中的元素
adobe=('flash' 'flex' 'photoshop' 'dreamweaver' 'premiere') echo ${adobe[@]/flash/flashcs5} # 打印 # 注意,打印的结果是一个字符串列表,不是数组 # flashcs5 flex photoshop dreamweaver premiere # # 将替换后的值重新保存成数组 adobe=(${adobe[@]/flash/flashcs5})
2. 删除数组元素
使用命令替换并重新赋值的方式删除数组元素
# 删除photoshop元素 adobe=('flash' 'flex' 'photoshop' 'dreamweaver' 'premiere') adobe=(${adobe[@]:0:2} ${adobe[@]:3}) echo ${adobe[@]} # 打印 # flash flex dreamweaver premiere
使用模式操作符删除数组元素
adobe=('flash' 'flex' 'photoshop' 'dreamweaver' 'premiere') adobe=(${adobe[@]/photoshop/}) echo ${adobe[@]} # 打印 # flash flex dreamweaver premiere
四、循环
使用for in循环读取数组:
adobe=('flash' 'flex' 'photoshop' 'dreamweaver' 'premiere') for item in ${adobe[@]};do echo $item done # 打印 # flash # flex # photoshop # dreamweaver # premiere
使用for循环读取数组:
adobe=('flash' 'flex' 'photoshop' 'dreamweaver' 'premiere') len=${#adobe[@]} for ((i=0;i<$len;i++));do echo ${adobe[$i]} done # 打印 # flash # flex # photoshop # dreamweaver # premiere
总结
以上就是关于bash数组操作的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
上一篇: 让产品说话 2019年魅族斩获诸多大奖:获媒体一致好评
下一篇: hbase在淘宝的应用和优化小结
推荐阅读
-
PHP合并数组+与array_merge的区别分析_PHP教程
-
php与Mysql的一些简单的操作_PHP教程
-
PHP中的类型约束介绍,PHP类型约束介绍_PHP教程
-
java开发中利用POI的 HSSFWorkbook 对excel进行操作
-
php数组转换js数组操作及json_encode的用法详解
-
Apache中RewriteCond规则参数的详细介绍_PHP教程
-
【PHP】array_walk_recursive ― 对数组中的每个成员递归地施用用户函数
-
如何将一个PHP数组有格式的写入文件中
-
Symfony2实现在doctrine中内置数据的方法,symfony2doctrine_PHP教程
-
nodejs中设置图片的中间件实例教程