时间:2021-05-22
前言
BASH只支持一维数组,但参数个数没有限制。
如声明一个数组:
(其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组)
一、定义数组
1. 使用[]操作符
names[0]='zrong'names[1]='jacky'2. 使用()直接赋值
names=('zrong' 'jacky')# 或names=([0]='zrong' [1]='jacky')3. 使用declare -a定义数组。这种方法可以将一个空的变量定义成数组类型。
declare -a names4. 从文件中读取数组
cat>names.txtzrongjackysweetCtrl+C# 将每一行读取为数组的一个元素names=(`cat 'names.txt'`)二、读取数组
1. 数组取值
和ActionScript一样,Bash也使用[]操作符和基于0的下标来取值:
adobe=('Flash' 'Flex' 'Photoshop')echo ${adobe[0]}# 打印# Flash2. 数组长度(元素个数)
使用“@”这个特殊的下标,可以将数组扩展成列表,然后就可以使用bash中的获取变量长度的操作符“#”来获取数组中元素的个数了:
adobe=('Flash' 'Flex' 'Photoshop')echo ${#adobe[@]}# 打印# 3有趣的是,没有定义的数组下标,并不会占用数组中元素的个数:
adobe=([0]='Flash' [2]='Flex' [4]='Photoshop')echo ${#adobe[@]}# 打印# 33. 获取数组的一部分
命令替换对数组也是有效的,可以使用偏移操作符来取得数组的一部分:
adobe=('Flash' 'Flex' 'Photoshop' 'Dreamweaver' 'Premiere')echo ${adobe[@]:1:3}# 打印# Flex Photoshop Dreamweaverecho ${adobe[@]:3}# 打印# Dreamweaver Premiere4. 连接两个数组
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 $itemdone# 打印# 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数组操作的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
在Bash中定义一个数组有两种方法可以在bash脚本中创建新数组。第一个是使用declare命令来定义一个Array。此命令将定义名为test_array的关联
按照官方教程,下载安装包,点击安装后,如需在命令行启动,还需设置命令路径:在命令行中,打开配置文件.bash_profile:vim~/.bash_profil
sh不像bash和ksh那样可以非常方便的定义和使用数组,但是可以通过其它方式来模拟数组。【方法1】通过set命令和位置参数来模拟数组#定义数组set'word
默认情况下,bash命令行可以自动补全文件或目录名称。不过,我们可以使bash命令行补全执行更多的操作,通过补全命令可以让它成就下一个辉煌。这个教程说明了我们是
LinuxShell在编程方面比Windows批处理强大很多,无论是在循环、运算。bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,